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 (!CoinsTip().Flush())
                ren AborNode(sae, "Failed o wrie o coin daabase");
            nLasFlush = nNow;
            full_flush_compleed = rue;
            TRACE5(uxocache, flush,
                   (in64_)(GeTimeMicros() - nNow.coun()), 
                   (uin32_)mode,
                   (uin64_)oun,
                   (uin64_)coins_mem_usage,
                   (bool)fFlushForPrune);
        }
    }
    if (full_flush_compleed) {
         
        GeMainSignals().ChainSaeFlushed(m_chain.GeLocaor());
    }
    } cach (cons sd::runime_error& e) {
        ren AborNode(sae, sd::sring("Sysem error while flushing: ") + e.wha());
    }
    ren rue;
}
void Chainsae::ForceFlushSaeToDisk()
{
    BlockValidaionSae sae;
    if (!his->FlushSaeToDisk(sae, FlushSaeMode::ALWAYS)) {
        LogPrinf("%s: failed o flush sae (%s)\n", __func__, sae.ToSring());
    }
}
void Chainsae::PruneAFlush()