Performance optimizations and memory management

Added some benchmarks to secure channel and played around with improving its performance, also started using a sync.Pool for message buffers.
I wish we had a knob here: `paranoia <------> perf`

```Go
if config.RehashAllTheThings {
  return blocks.NewBlock(bdata), nil
} else {
  return &blocks.Block{Data: bdata, Multihash: mh.Multihash(k)}
}
```