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