We haven't specifically seen GetEntitiesAsync hanging, but I can think of a reason why that might occur. The async portion of the call will retrieve the data from the backend, but all post-processing of that data to merge it into the PM cache is done on the main thread (because the PM is not thread safe).
I don't really know what's causing the slowdown in your particular case, but if the problem seems to be large amounts of data returned then breaking the query up into smaller chunks might work, and you could run each of these async queries in parallel.
Other things to look at would be any event handlers on the EntityTable(s) involved and turning those handlers off during the merge; any other handlers for list or property changed events, and turning those off.