I think you have put correct options. Here are my preferences in easier to harder order.
4. Dont use attributes, only use elements
2. Create the ID attribue ahead of time, and just leave it blank ( This has to be done outside of orchestration or you'll be back to square one) (But you can always use option 3 for this to make it simpler)
3. Do the manipulation and coerce to xml
1. Use a dsc to do xml manipulation. I know XSLT can do this but I find XQuery component much easier to do xml manipulation.