Problem: gettxoutsetinfo, scantxoutset, and dumptxoutset can retain LevelDB iterators while AssumeUTXO cache rebalancing replaces m_db, causing LevelDB to abort.
Originally reported in #35465 (review).
Fix: Make ResizeCache() wait for live cursors and background compaction before replacing m_db; cursor iteration and compaction remain concurrent.
A resize can wait for the duration of a long-running UTXO scan.
<details> <summary>LevelDB assertion failure without the fix</summary>
Assertion failed: (dummy_versions_.next_ == &dummy_versions_), function ~VersionSet, file version_set.cc, line 753.
</details>