split_gossip_messages: https://github.com/solana-labs/solana/blob/a97c04b40/core/src/cluster_info.rs#L1536-L1574 splits crds-values into chunks to fit into a gossip packet. However it is using a global upper-bound for the header-size across all protocols: https://github.com/solana-labs/solana/blob/a97c04b40/core/src/cluster_info.rs#L90-L93 This can be wasteful as the specific gossip protocol can have smaller header than this upper-bound (e.g. Protocol::PushMessage is 170 bytes smaller). Adding more crds-values in one gossip packet can avoid the overheads of separate packets and reduce total number of bytes sent over the wire. This commit updates the splitting function to take a max-chunk-size argument. At call-site, this value is set to the size of the protocol which the values are sent over.