the only thing which looking suspicious in your code is following:
session readStrategy: (MaReadStrategy minimumDepth: 0).
With this code I could improve performance considerably. Most of the time, my program doesn't need to materialize objects, so I tried this kind of null strategy and it worked fine.
Regards