CSHA512::Finalize() leaves the digest in the hasher's state and the last block in its buffer, and the class never wipes them. Every CSHA512 outside tests and benchmarks hashes secret data: in CCrypter::BytesToKeySHA512AES the final state holds the key and IV derived from the passphrase, the two hashers in CHMAC_SHA512 hold BIP32 seed and key material, and the RNG hashers in random.cpp hold seed material.
I add a destructor that cleanses both, as ChaCha20 already does, so each hasher is wiped when it goes out of scope instead of by each caller. Following review, this replaces the one-line cleanse in crypter.cpp this PR first proposed. It also makes #36551 unnecessary. A test is impractical, since the object no longer exists once destroyed. I built the tree and ran test_bitcoin and ctest; both pass, and Core's warning flags report nothing new.