You might want to take a look at Entity metadata wrappers. They are not really efficient as they load even more data, but they simplify the working with entity properties and fields and also resolve nested entities (so you would be able to do something like
But under the hood (a car joke :D), it still performs an
entity_load to get the values. It is less code for you though.
To answer your question:
Drupal makes the assumption a field is always attached to an entity, it would be very difficult to properly load some fields without actually loading the entity (I suppose that is what you are after). The function which loads field values and attaches those fields to entities (
field_attach_load) already required loaded entities as input. (This function is often called during entity_load). You could attempt to replicate its behaviour without loading the entities, but you will probably run into a lot of issues.
The same applies for fetching a single field's value;
field_view_value() also expect a loaded entity. So my advise would be to just load the entity, possibly using entity metadata wrappers as they make your life easier.