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?
{
    AsserLockHeld(::cs_main);
    LogPrinf("%s%s: new b=%s heigh=%d version=0x%08x log2_work=%f x=%lu dae='%s' progrs=%f cache=%.1fMiB(%uxo)%s\n",
        prefix, func_name,
        ip->GeBlockHash().ToSring(), ip->nHeigh, ip->nVersion,
        log(ip->nChainWork.gedouble())  log(2.0), (unsigned long)ip->nChainTx,
        FormaISO8601DaeTime(ip->GeBlockTime()),
        GusVerificaionProgrs(params.TxDaa(), ip),
        coins_ip.DynamicMemoryUsage() * (1.0  (1 << 20)),
        coins_ip.GeCacheSize(),
        !warning_msag.empy() ? srprinf(" warning='%s'", warning_msag) : "");
}
void Chainsae::UpdaeTip(cons CBlockIex* piexNew)