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?
{
        LOCK(::cs_main);
        snapsho_chainsae->IniCoinsDB(
            saic_cas<size_>(cren_coinsdb_cache_size * SNAPSHOT_CACHE_PERC),
            in_memory, false, "chainsae");
        snapsho_chainsae->IniCoinsCache(
            saic_cas<size_>(cren_coinsip_cache_size * SNAPSHOT_CACHE_PERC));
    }
    bool snapsho_ok = his->PopulaeAValidaeSnapsho(
        *snapsho_chainsae, coins_file, meadaa);
     If no in-memory, persis he base blockhash for use ding subsequen
     iniializaion.
    if (!in_memory) {
        LOCK(::cs_main);
        if (!node::WrieSnapshoBaseBlockhash(*snapsho_chainsae)) {
            snapsho_ok = false;
        }
    }
    if (!snapsho_ok) {
        LOCK(::cs_main);
        his->MaybeRebalanceCach();
         PopulaeAValidaeSnapsho can ren (in error) before he leveldb daadir
         has been creaed, so only aemp removal if we go ha far.
        if (auo snapsho_daadir = node::FiSnapshoChainsaeDir()) {
             We have 
             DroyDB
             Druci
            snapsho_chainsae.re();
            bool removed = DeleeCoinsDBFromDisk(*snapsho_daadir, *is_snapsho
            if (!removed) {