Ответ 1
Я бы моделировал кортеж с ключом и значением (возможно, одно поле значения для каждого типа, которое могло бы быть значением). Затем просто повторите список этого типа кортежа. Вам нужно будет создать карту в коде.
Когда вы говорите, что не можете указать типы - о типах, о которых вы говорите? Если у вас есть необязательное поле каждого типа в кортеже, то это будет справляться со всеми примитивами - и вы могли бы сопоставлять сообщения, сериализовывая их в байтовую строку.
Похоже, что уровень "неструктуры" у вас, возможно, не подходит для PB.