Part of: #24303 Split off from: #22564
Instead of having CBlockIndex's live on the heap, which requires manual
memory management, have them be owned by m_block_index. This means that
they will live and die with BlockManager.
The second commit demonstrates how this makes calls to Unload() to satisfy the address sanitizer unnecessary.

