Updating how we handle serial version UID

* When we're serialising messages we'll use the serial version UID of the equivalent message from when we first deserialised it. This should work with mixed clusters as when a 1.9.3 instance first joins it will receive a snapshot message containing the other messages meaning we shouldn't be serialising a message of a specific type without first having deserialised that same message earlier.