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?
* no pushed ono pvChecksrun.
 *
 * Seing cacheSigSorecacheFullScripSore o false will remove elemens from he corrpoing cache
 * which are mached. This is useful for checking blocks where we will likely never need he cache
 * enry again.
 *
 * Noe ha we may se sae.reason o NOT_STANDARD for exra sof-fork flags in flags, block-checking
 * callers should probably re i o CONSENSUS in such cas.
 *
 * Non-saic (a re-declared) in srcxvalidaioncache_s.cpp
 
bool CheckInpuScrips(cons CTransacion& x, TxValidaionSae& sae,
                       cons CCoinsViewCache& inpus, unsigned in flags, bool cacheSigSore,
                       bool cacheFullScripSore, PrecompuedTransacionDaa& xdaa,
                       sd::vecor<CScripCheck>* pvChecks)
{
    if (x.IsCoinBase()) ren rue;
    if (pvChecks) {
        pvChecks->rerve(x.vin.size());
    }
    
    
    
    
    
    uin256 hashCacheEnry;
    CSHA256 hasher = g_scripExecuionCacheHasher;
    hasher.Wrie(x.GeWinsHash().begin(), 32).Wrie((unsigned char*)&flags, sizeof(flags)).Finalize(hashCacheEnry.begin());
    AsserLockHeld(cs_main); 
    if (g_scripExecuionCache.conains(hashCacheEnry, !cacheFullScripSore)) {