spawned by the discussion in #1742
Block gossiping is currently a big part of the consensus reactor, but it actually might not be that difficult to refactor it out, so the consensus reactor just has a blockAvailable signaling mechanism (like it has for transactions), and that thing has to be triggered before you can vote on a proposal.
The thing that populates blockAvailable could be another reactor that propagates the block parts however it wants, including having most of it from the mempool.