message: refactor broadcastDSPInv() out of the mempool write lock scope
  to increase parallelism.
diff: @@ -90,7 +90,11 @@ void RespendRelayer::Trigger(CTxMemPool &pool)
  if (!valid || !interesting)
  return;
  + CTransactionRef ptx;
  + DoubleSpendProof dsp;
  +
  // no DS proof exists, lets make one.
  + {
  WRITELOCK(pool.cs_txmempool);
  assert(pool.mapTx.end() != originalTxIter);
  if (originalTxIter->dsproof == -1)
  @@ -98,13 +102,12 @@ void RespendRelayer::Trigger(CTxMemPool &pool)
  try
  {
  auto item = *originalTxIter;
  - const auto dsp = DoubleSpendProof::create(originalTxIter->GetTx(), *pRespend);
  + dsp = DoubleSpendProof::create(originalTxIter->GetTx(), *pRespend);
  item.dsproof = pool.doubleSpendProofStorage()->add(dsp);
  LOG(DSPROOF, "Double spend found, creating double spend proof %d\n", item.dsproof);
  pool.mapTx.replace(originalTxIter, item);
  - // send INV to all peers
  - broadcastDspInv(pool._get(originalTxIter->GetTx().GetHash()), dsp.createHash());
  + ptx = pool._get(originalTxIter->GetTx().GetHash());
  }
  catch (const std::exception &e)
  {
  @@ -113,4 +116,9 @@ void RespendRelayer::Trigger(CTxMemPool &pool)
  }
  }
  + // send INV to all peers
  + if (ptx != nullptr && !dsp.isEmpty())
  + broadcastDspInv(ptx, dsp.createHash());
  +}
  +
  } // ns respend
  