Are you sure it's not being parsed properly? Strange that you'd see System.DateTime if it weren't being parsed. Maybe it's sending the typename as a string.
Anyway, you could store / send it as a long instead: DateTime.UtcNow.Ticks. To reconstruct, use DateTime dt = new DateTime(value, DateTimeKind.Utc).
You could add this to TNSerializer.cs to automate the process. Might also need to add it to the DataNode class, not sure.