Move the code that pushes sync blocks from the network to the client into a separate task, and force that task to yield for 0.4s every 1s to allow other network operations to take place.  When that happens, stop fetching blocks from the network until we've fully processed the backlog.
#727