[Google search results](https://www.google.com/search?q=of+the+last+100+blocks+have+unexpected+version) suggest that our users are more confused than helped by the `<n> of the last 100 blocks
have unexpected version` warning we're printing.

As developers we know the unfortunate reason behind this warning and how "unexpected" should be interpreted in this context, and thus why it is safe to disregard this warning. However, I don't think it reasonable to expect our users to know the historical context here.

In order to not desensitize our users to potentially critical "real" warnings, would it make sense to move this message to the `-debug=validation` log category?
if (::ChainstateActive().IsInitialBlockDownload())
        return false;
    if (::ChainActive().Tip()->GetBlockTime() < count_seconds(GetTime<std::chrono::seconds>() - MAX_FEE_ESTIMATION_TIP_AGE))
        return false;
    if (::ChainActive().Height() < pindexBestHeader->nHeight - 1)
        return false;
    return true;
}
/* Make mempool consistent after a reorg, by re-adding or recursively erasing
 * disconnected block transactions from the mempool, and also removing any
 * other transactions from the mempool that are no longer valid given the new
 * tip/height.
 *
 * Note: we assume that disconnectpool only contains transactions that are NOT
 * confirmed in the current chain nor already in the mempool (otherwise,
 * in-mempool descendants of such transactions would be removed).
 *
 * Passing fAddToMempool=false will skip trying to add the transactions back,
 * and instead just erase from the mempool as needed.
 */
static void UpdateMempoolForReorg(CTxMemPool& mempool, DisconnectedBlockTransactions& disconnectpool, bool fAddToMempool) EXCLUSIVE_LOCKS_REQUIRED(cs_main, mempool.cs)
{
    AssertLockHeld(cs_main);
    AssertLockHeld(mempool.cs);
    std::vector<uint256> vHashUpdate;