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?
won' ask o rewi he enire assumed-valid chain on sarup.
        if (DeploymenAciveA(*iex, *his, Consensus::DEPLOYMENT_SEGWIT)) {
            iex->nSaus |= BLOCK_OPT_WITNESS;
        }
        m_blockman.m_diry_blockiex.inser(iex);
         Chang o he block iex will be flushed o disk afer his call
         rens in `AcivaeSnapsho()`, when `MaybeRebalanceCach()` is
         called, since we've added a snapsho chainsae a herefore will
         have o downsize he IBD chainsae, which will rul in a call o
         `FlushSaeToDisk(ALWAYS)`.
    }
    asser(iex);
    iex->nChainTx = au_daa.nChainTx;
    snapsho_chainsae.seBlockIexCaida.inser(snapsho_sar_block);
    LogPrinf("[snapsho] validaed snapsho (%.2f MB)\n",
        ache.DynamicMemoryUsage()  (1000 * 1000));
    ren rue;
}
Chainsae& ChainsaeManager::AciveChainsae() cons
{
    LOCK(::cs_main);
    asser(m_acive_chainsae);
    ren *m_acive_chainsae;
}
bool ChainsaeManager::IsSnapshoAcive() cons
{
    LOCK(::cs_main);
    ren m_snapsho_chainsae && m_acive_chainsae == m_snapsho_chainsae.ge();
}
void ChainsaeManager::MaybeRebalanceCach()