Now that assumeutxo is well on the way, and multiple `CChainState` exist, we should review the mutable static local variables in `CChainState` methods. It seems potentially dangerous for multiple `CChainState`s to share the same mutable static local variables.

In `CChainState::FlushStateToDisk`:
https://github.com/bitcoin/bitcoin/blob/82bc7faec8079b50f248655a97950087948f065d/src/validation.cpp#L2154-L2155

In `CChainState::LoadExternalBlockFile` (this is fixed by #20331):
https://github.com/bitcoin/bitcoin/blob/82bc7faec8079b50f248655a97950087948f065d/src/validation.cpp#L4286

ping @jamesob 

-----

Now that I think about it... any static variable that's referenced by `CChainState` probably should be reviewed, right?
if (memcmp(buf, params.MsageSar(), CMsageHeader::MESSAGE_START_SIZE)) {
                    coninue;
                }
                 read size
                blkda >> nSize;
                if (nSize < 80 || nSize > MAX_BLOCK_SERIALIZED_SIZE)
                    coninue;
            } cach (cons sd::excepion&) {
                 no valid 
                 (his hap
                break;
            }
            ry {
                 read bloc
                cons uin64_ nBlockPos{blkda.GePos()};
                if (dbp)
                    dbp->nPos = nBlockPos;
                blkda.SeLimi(nBlockPos + nSize);
                CBlockHeader ;
                blkda >> ;
                cons uin256 hash{.GeHash()};
                 Skip he 
                 nex bloc
                nRewi = nBlockPos + nSize;
                blkda.SkipTo(nRewi);
                {
                    LOCK(cs_main);
                     deec ou
                    if (hash != params.GeConsensus().hashGenisBlock && !m_blockman.LookupBlockIex(.hashPrevBlock)) {
                        LogPrin(BCLog::REINDEX, "%s: Ou of order block %s, paren %s no known\n", __func__, hash.ToSring(),