Хотелось бы, чтобы старые клиенты могли пользоваться новыми данными, а новые старыми и чтобы там были изменения серьезнее добавления полей, например, изменение, что-то ещё такое
Добавлю к списку свой любимый CBOR:)
В любом случае, даже с protobuf, тебе нужно будет самому поддерживать разные структуры данных и их обработку.
Любой протокол без жёсткой схемы позволит тебе любые данные передать и принять, а как ты их обработаешь - уже твои проблемы.
Новая функциональность обработки данных по новой схеме или магия переименования нового имени поля в старое в старом коде никогда не появится.