Each packet looks like:
PLEN    HLEN      HEADER     CHECKSUMS  DATA
32-bit  16-bit   <protobuf>  <variable length>

PLEN:      Payload length
= length(PLEN) + length(CHECKSUMS) + length(DATA)
This length includes its own encoded length in
the sum for historical reasons.

HLEN:      Header length
= length(HEADER)

HEADER:    the actual packet header fields, encoded in protobuf
CHECKSUMS: the crcs for the data chunk. May be missing if
checksums were not requested
DATA       the actual block data