I found my answer. Thanks for the replies!
What I was trying to do is "fake" dynamic reports as best as I can. What I was failing to do was build the report off of an XML schema of a dataset. I needed it to be generic enough that I could use a dataset generated from one of two databases. As long as they can fall in to the same schema (which they can), I can pass it whichever one is appropriate. This way, I can just create as many formula fields as there are potential fields, and set them to a value at runtime.
This allows the user to control which fields they want, and order the fields however they want. It will also allow them to report off of two separate databases (that hold roughly the same data...one is for quotes, and the other is for those quotes that have been booked).
Thanks again for the help!