I also think the webservice approach should be implemented according to some kind of simple message based mechanism instead of complex type which is more what remoting is meant for.
As for passing fields, you should indeed be fine with strings parameters.
The FieldInfoProviderSingleton would let you get the IEntityField given the entity name and field name. unfortunately it's marked as friend, so you'll have to rely on the factories instead.
As they deal with generated enums such as EntityType, you will have to do some converting there, but that works fine.
For instance, say you get entity name and field name as input parameters.
cast the entity name to the corresponding EntityType Enum, then call yourEntityFields = CreateEntityFieldsObject( yourEntityType), and with the resulting IEntityFields you can use:
yourEntityField = yourEntityFields(yourFieldName)
In the last resort, if you want to do more complicated things like playing with relations, relection also works fine, given the normalized syntax, but in that case you should make sure to cache your property descriptors because of the perfs overhead.
Hope that helps.