Me ha gustado la idea que propones, voy a aplicarla y voy a hacer algunas pruebas con una función de inicialización que usa la dichosa estructura a ver si funciona bien.
La 2ª idea que me propones es la versión "tediosa" que empecé haciendo, y que se iba convirtiendo en una "caja de pandora"; a cada campo que iba traduciendo le correspondía un tipo predefinido en otro header, que a su vez podía tener otro registro que...bla bla bla...y no acababa nunca.
Ya te comentaré si da resultado, muchas gracias por la ayuda¡¡