Take channel manipulation out of the go block

- Using multiple threads in the go block was probably making it possible
  to have too many waiting items queueing up.  Removing the go block
  turns this into a (hopefully) blocking operation from tcp socket ->
  channel -> json -> output channel -> disk.  If this is correct, it
  means that there is more blocking, but this will also cause the
  appropriate backpressure.