In my opinion, generating the entire smbios table in QEMU and using the "romfile_loader" mechanism (see seabios src/fw/romfile_loader.c) would be the preferred solution. I understand that this is more than you signed up for.
Yes, this is where we should end up long-term. For the time being I think it is fine to use the existing mechanism to switch over table by table, and once we have the code to generate all tables in qemu we can switch over to an interface where we simply pass all tables as single blob. I think we don't even need the romfile_loader, or do have smbios tables pointers which need to be fixed up?