Hi Daniel,
The XSN is just a cab file. You can use the Cab tools to programmatically "package" together an XSN but as Shiva suggests, it's very dangerous. That's because the manifest.xsf should also be updated in the correct way. If it's just an XSD change (an addition of a node), you can do it by saving the files as source (or uncabbing them by renaming the XSN as CAB and double clicking the CAB to get the files out), modifying the XSD and re-cab the form by using MakeCAB or some other utility. But, as you have found out, if you don't modify SampleData and Template.xml it won't necessarily work.
There is no object model for the InfoPath template. We are looking into creating one, but it's a lot of work, and while we get the request about once every 2-3 months, nobody wants to pay us to do it yet, so we're being lazy. Maybe in 6 months we'll have something for you. On the other hand, if you'd like to see something sooner, and have a checkbook, let me know and we can talk. :)