### Describe the issue

Restarting bitcoin, mempool starts filling from scratch.

### Can you reliably reproduce the issue?
#### If so, please list the steps to reproduce below:
1. Wait for mempool to reach for example 3000 transactions
2. Restart bitcoin
3. Watch mempool filling slowly from scratch

### Expected behaviour
Mempool would already contain ~3000 TX on startup

### Actual behaviour
It starts at 0 and fills up slowly with a few per second.

### Screenshots.
http://imgur.com/a/or82d

### What version of bitcoin-core are you using?
Windows x64 0.14rc1 binary from https://bitcoin.org/bin/bitcoin-core-0.14.0/test.rc1/


### Any extra information that might be useful in the debugging process.
I may not be aware of how the mempool.dat thing works and there could just be a misunderstanding.

if (pindexBestForkTip && chainActive.Height() - pindexBestForkTip->nHeight >= 72)
        pindexBestForkTip = NULL;
    if (pindexBestForkTip || (pindexBestInvalid && pindexBestInvalid->nChainWork > chainActive.Tip()->nChainWork + (GetBlockProof(*chainActive.Tip()) * 6)))
    {
        if (!GetfLargeWorkForkFound() && pindexBestForkBase)
        {
            std::string warning = std::string("'Warning: Large-work fork detected, forking after block ") +
                pindexBestForkBase->phashBlock->ToString() + std::string("'");
            AlertNotify(warning);
        }
        if (pindexBestForkTip && pindexBestForkBase)
        {
            LogPrintf("%s: Warning: Large valid fork found\n  forking the chain at height %d (%s)\n  lasting to height %d (%s).\nChain state database corruption likely.\n", __func__,
                   pindexBestForkBase->nHeight, pindexBestForkBase->phashBlock->ToString(),
                   pindexBestForkTip->nHeight, pindexBestForkTip->phashBlock->ToString());
            SetfLargeWorkForkFound(true);
        }
        else
        {
            LogPrintf("%s: Warning: Found invalid chain at least ~6 blocks longer than our best chain.\nChain state database corruption likely.\n", __func__);
            SetfLargeWorkInvalidChainFound(true);
        }
    }
    else
    {
        SetfLargeWorkForkFound(false);
        SetfLargeWorkInvalidChainFound(false);
    }
}
void CheckForkWarningConditionsOnNewFork(CBlockIndex* pindexNewForkTip)