Algumas das pesquisas posteriores sobre otimização de Chamada de Procedimento Remoto envolveram problemas como este. O único que eu posso lembrar e encontrar é Flux RPC. Aquelas pessoas escreveram um artigo sobre a otimização do RPC em 1995 que pode ter algum interesse para você. Se bem me lembro (eu não relei o artigo), eles tinham algum código de serialização / empacotamento que fazia praticamente o que você está falando, e o fez tão rápido ou mais rápido do que o empacotamento codificado manualmente, como o RPC ONC. .
Dito isto, acho que a sua melhor aposta é morder a bala e fazê-lo à mão. É muito difícil analisar C ou C ++ em face de typedefs e macros e assim por diante, então, a menos que você possa pesquisar um struct parser, ou talvez um sistema para ler defs struct e escrever código para traduzir, você acabará fazendo isso à mão. Seja muito organizado. Faça o máximo de verificação mecânica possível. Mesmo contando os elementos "para" e "de" e garantindo que a contagem de correspondências detectará alguns erros.