OK, I found why the UTC-time was being converted to "incorrect local time". The fields 'Startime'/'EndTime' in the typed dataset are of type 'DateTime'. There is a property associated with DataColumn of DateTime type called 'DateTimeMode' which is set to 'UnspecifiedLocal' by default. http://msdn.microsoft.com/en-us/library/system.data.datasetdatetime.aspx
Basically, this option adds the offset to the datetime value without converting it. As a test, I changed the 'DateTimeMode' to 'Utc' and retried. The XML received from DataSet.GetXml() was able to convert the value correctly: "2012-11-06T05:00:00Z"
As a solution to my problem, I'm keeping the property to 'UnspecifiedLocal' as it is. Instead, while adding the value to the dataset I convert it to local time.
objOrderRow.EndTime = objOrder.EndTime.ToLocalTime();
(Note that this works for me because my app server and database server are in the same timezone and conversion to UTC is uncomplicated.)