I posted earlier that turning off WiFi fixed it for me. Turns out that wasn't correct.
It does seem to be related to the email data "Push" settings.
Our Exchange server is not set up properly for ActiveSync. When the 2.0 software came out, I tried to get it to work but never did. I decided to look into to it again today and while at it, I looked at the EventViewer Application log for "Server ActiveSync." There were errors from my iPhone logged 40 to 60 times per minute, every minute, starting yesterday after I installed 3.0 and messed with the iPhone Push settings. That's once per second...every second. The log is filled with these.
The time periods during which my phone was running hot and the battery being consumed quickly matches the times where these accesses/errors show up in the Exchange server's logs.
* The iPhone gets stuck making continuous connections to the "push" server, which keeps the CPU running all the time and kills the battery.
*
This should be really easy for Apple to catch (and hopefully fix).
(In my case, turning off wifi probably just slowed down the traffic that the phone was generating giving it time to sleep a bit)
So, if you're having this problem, set Settings -> Mail, ... -> Fetch New Data -> Push = OFF
(and possibly check whatever server you were trying to get "pushes" from and see if something is erroring out there...)