John,
I don't know if this will help, I'm thinking out loud... but can you use a global temp table (##) and create the table name dynamically? IOW, if you can trap the unique User ID from your app (or something else unique about the user running it), can you create (and later drop) the temp table name that way?
Also...by any chance does your dynamic SQL return multiple rows, or is it ALWAYS one row? (I had this same problem a while back, but my dynamic SQL always returned one row, so I was able to effectively get away with an OUTPUT clause)
Kevin