If you have same problem like mine: Gets Warm/Heat and Battery drain pretty fast; I got temporary solution.
For 2 days I turned off the 3G connection under Carrier Setting (so i rely only on 2G/EDGE). I only turn on my 3G when I really need to do something over the internet (browsing, downloading).
I found that Battry last much longer and there is no heat (only when I turn on my 3G i got Heat).
Seems like the 3G connection from the carrier I am using does not available in every area/place. I suspect when I turn on the 3G, my iPhone will keep on trying to connect to 3G. In result battery drained faster and heated. But I think the problem is because my iPhone does not try to connect to 3G but to 4G instead. In my country the 4G still not available.
So In result the iPhone keep on searching to connect to 4G.
Well this is my asumption.