Why do my futures keep getting cancelled using BitcoinJ?
Ok figured it out. The memory pool only holds transactions that have not been included in a block. The reason it stops working after a few minutes is the transaction is included in a block, and therefore the peer does not have it in its memory pool. 

It seems I will need a different approach.