Cleanup and semantic changes

 - reduced duplication a bit, still needs more attention on that front
 - changed siphash to use a null-byte string for consistency with everything else we use siphash for
 - don't write out duplicate consolidated streams when we don't need to