we have a very complex multi tenant application that we had issues with performance as well.

We ran into issues with sql filters. in certain cases the SQL filter stopped DF from properly jumping in and out of indexes and caused massive unneeded network traffic

while looking at improving network speed can help my guess is the main issue is simply unnecessary network traffic which is why the .net stuff doesnt have the same issues.
DF builds its sql statement based on a number of things and esp with sql filters the choices are not always the best

debug your stataments in profiler you will find some interesting things. Actually there should be some of my posts here that show some of the issues we had to deal with