onHashes
Validates and applies a received PeerMessage.Hashes. The message is matched to a file by its piecesRoot; its leading length hashes are the requested piece-layer run and any trailing hashes are uncle/proof hashes. The run + proof are folded with Merkle.verifyProof against the file's known root; on success the validated piece roots are written into that file's MerkleTree via MerkleTree.loadPieceLayerRow and the outstanding-request slot is cleared.
Return
true if the hashes validated and were inserted; false (and no mutation) on any mismatch: a wrong file, malformed hash sizes, or a failed proof.