message: allow minter thread to recover from exceptions
diff: @@ -584,9 +584,15 @@ void PoSMiner(std::shared_ptr<CWallet> pwallet, CConnman* connman, CTxMemPool* m
  {
  LOCK2(cs_main, pwallet->cs_wallet);
  -
  + try {
  pblocktemplate = BlockAssembler(*mempool, Params()).CreateNewBlock(scriptPubKey, pwallet.get(), &fPoSCancel);
  }
  + catch (const std::runtime_error &e)
  + {
  + LogPrintf("PeercoinMiner runtime error: %s\n", e.what());
  + continue;
  + }
  + }
  if (!pblocktemplate.get())
  {
  @@ -619,7 +625,14 @@ void PoSMiner(std::shared_ptr<CWallet> pwallet, CConnman* connman, CTxMemPool* m
  }
  }
  LogPrintf("CPUMiner : proof-of-stake block found %s\n", pblock->GetHash().ToString());
  + try {
  ProcessBlockFound(pblock, Params());
  + }
  + catch (const std::runtime_error &e)
  + {
  + LogPrintf("PeercoinMiner runtime error: %s\n", e.what());
  + continue;
  + }
  reservedest.KeepDestination();
  // Rest for ~3 minutes after successful block to preserve close quick
  if (!connman->interruptNet.sleep_for(std::chrono::seconds(60 + GetRand(4))))
  @@ -635,7 +648,6 @@ void PoSMiner(std::shared_ptr<CWallet> pwallet, CConnman* connman, CTxMemPool* m
  {
  LogPrintf("PeercoinMiner terminated\n");
  return;
  - // throw;
  }
  catch (const std::runtime_error &e)
  {
  