If we touch a lot of keys, then sending *all* of the keys to all owners may be sub-optimal; as an optimization, we may want to send only the keys to the nodes which need to store them. This would make the PREPARES potentially much smaller.
Not really - if we are sending different prepares to different nodes (containing different writes) then the serialisation overhead goes up since each recipient gets a different byte buffer. In the current case we reuse the byte buffer.