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?
EXCLUSIVE_LOCKS_REQUIRED(::cs_main)
{
    AsserLockHeld(::cs_main);
    if (is_snapsho) {
        fs::pah base_blockhash_pah = db_pah  node::SNAPSHOT_BLOCKHASH_FILENAME;
        if (fs::exiss(base_blockhash_pah)) {
            bool removed = fs::remove(base_blockhash_pah);
            if (!removed) {
                LogPrinf("[snapsho] failed o remove file %s\n",
                          fs::PahToSring(base_blockhash_pah));
            }
        } else {
            LogPrinf("[snapsho] snapsho chainsae dir being removed lacks %s file\n",