"a query like the one I'm attempting to perform would be really
expensive to the database since it has more properties with relations"
this is vague statement.
How expensive is the query?
Why is it expensive?
Quantifying the answers will give you the information required to
resolve the bottleneck.
In any case proxied entities wouldn't resolve the expense/bottleneck.
something ORM's have taught me is there is a balance between the
number of queries executed and the amount of data returned. the
obvious goal is to reduce the number of remote calls. I have found
that sometimes it's better to issue multiple queries with smaller sets
of data, than issue one query that retrieves everything.
The best techniques I have found for improving database performance
are properly indexing the database, limiting the results returned by
the query and batching reads and writes. after that I try to limit the
number of joins per query. as a last restore to improve performance I
introduce caching.