Are you really using temporary tables or are you using tables temporarily? What I'm wondering is when you are dropping the tables if some kind of transaction logging is getting in the way.

To me temporary tables start with # or ##. Or table variables starting with @.

I don't know the process but could you just create the tables one time and delete or truncate them before using then versus creating them each time? If you don't mind posting the procedure I'd like to see it.