A couple notes about your scenario and Azure tables
- Take a look at the 3.0 release of the client which has dramatic performance improvements for tables, including JSON light /nometadata
- I highly recommend utilizing the Table service layer which provides the TableEntity, ITableEntity, and DynamicTableEntity types.
You have a few options here, the first is to use the TableEntity object and customize the serialization by overriding ITableEntity.Read/Write entity. This will allow you to change property names / values etc during serialization / deserialization.
You can also use a DTO type as you mentioned, but then you must maintain the object separately etc. In this teched talk at ~40:30 I demonstrated how to use a generic EntityAdapter class to directly persist 3rd party objects that did not Derive from TableEntity or implement the ITableEntity interface. (You can find the source of the examples here.) This approach would allow you to persist any object type to Azure Tables without exposing any dependency on storage itself.