message: fuzz: Check for addrv1 compatibility before using addrv1 serializer/deserializer on CSubNet
diff: #include <net.h>
  #include <netbase.h>
  #include <node/utxo_snapshot.h>
  +#include <optional.h>
  #include <primitives/block.h>
  #include <protocol.h>
  #include <psbt.h>
  @@ -61,9 +62,12 @@ T Deserialize(CDataStream ds)
  }
  template <typename T>
  -void DeserializeFromFuzzingInput(const std::vector<uint8_t>& buffer, T& obj)
  +void DeserializeFromFuzzingInput(const std::vector<uint8_t>& buffer, T& obj, const Optional<int> protocol_version = nullopt)
  {
  CDataStream ds(buffer, SER_NETWORK, INIT_PROTO_VERSION);
  + if (protocol_version) {
  + ds.SetVersion(*protocol_version);
  + } else {
  try {
  int version;
  ds >> version;
  @@ -71,6 +75,7 @@ void DeserializeFromFuzzingInput(const std::vector<uint8_t>& buffer, T& obj)
  } catch (const std::ios_base::failure&) {
  throw invalid_fuzzing_input_exception();
  }
  + }
  try {
  ds >> obj;
  } catch (const std::ios_base::failure&) {
  @@ -125,9 +130,15 @@ void test_one_input(const std::vector<uint8_t>& buffer)
  CScript script;
  DeserializeFromFuzzingInput(buffer, script);
  #elif SUB_NET_DESERIALIZE
  - CSubNet sub_net;
  - DeserializeFromFuzzingInput(buffer, sub_net);
  - AssertEqualAfterSerializeDeserialize(sub_net);
  + CSubNet sub_net_1;
  + DeserializeFromFuzzingInput(buffer, sub_net_1, INIT_PROTO_VERSION);
  + AssertEqualAfterSerializeDeserialize(sub_net_1, INIT_PROTO_VERSION);
  + CSubNet sub_net_2;
  + DeserializeFromFuzzingInput(buffer, sub_net_2, INIT_PROTO_VERSION | ADDRV2_FORMAT);
  + AssertEqualAfterSerializeDeserialize(sub_net_2, INIT_PROTO_VERSION | ADDRV2_FORMAT);
  + CSubNet sub_net_3;
  + DeserializeFromFuzzingInput(buffer, sub_net_3);
  + AssertEqualAfterSerializeDeserialize(sub_net_3, INIT_PROTO_VERSION | ADDRV2_FORMAT);
  #elif TX_IN_DESERIALIZE
  CTxIn tx_in;
  DeserializeFromFuzzingInput(buffer, tx_in);
  