message: Move the future drift check before block signing
diff: @@ -3408,12 +3408,6 @@ bool SignBlock(std::shared_ptr<CBlock> pblock, CWallet& wallet, const CAmount& n
  int64_t nSearchInterval = 1;
  if (wallet.CreateCoinStake(wallet, pblock->nBits, nSearchInterval, nTotalFees, nTimeBlock, txCoinStake, key))
  {
  - // Check timestamp against prev
  - if(pblock->GetBlockTime() <= pindexBestHeader->GetBlockTime() || FutureDrift(pblock->GetBlockTime()) < pindexBestHeader->GetBlockTime())
  - {
  - return false;
  - }
  -
  if (nTimeBlock >= pindexBestHeader->GetMedianTimePast()+1)
  {
  // make sure coinstake would meet timestamp protocol
  @@ -3423,6 +3417,12 @@ bool SignBlock(std::shared_ptr<CBlock> pblock, CWallet& wallet, const CAmount& n
  pblock->hashMerkleRoot = BlockMerkleRoot(*pblock);
  pblock->prevoutStake = pblock->vtx[1]->vin[0].prevout;
  + // Check timestamp against prev
  + if(pblock->GetBlockTime() <= pindexBestHeader->GetBlockTime() || FutureDrift(pblock->GetBlockTime()) < pindexBestHeader->GetBlockTime())
  + {
  + return false;
  + }
  +
  // append a signature to our block and ensure that is LowS
  return key.Sign(pblock->GetHashWithoutSign(), pblock->vchBlockSig) &&
  EnsureLowS(pblock->vchBlockSig) &&
  