Идеальным вариантом, действительно, было бы использование "anonymous unions", стандартных для C++, но, к сожалению, для C этого нет ни в С89, ни в С99; мой компилятор также, увы, не поддерживает фичу в качестве расширения.
Т.е. простым изменением определения структур видимо не обойтись, и придется-таки перелопачивать все исходники и изменять(так или иначе) мульён строк. Эх, не подумали люди в свое время.

Хотя вариант с ручным паддингом все же остается.
Про секции и линковку посмотрю, смутно представляю как это, честно говоря.
Спасибо всем.