The issue with this one is that it was attempting to do a query for EntityBo by more than one principal id. The default strategy that an internal class (PredicateUtils) was using to convert the lookup criteria into predicates was create an OR per principal id. For large roles this causes many joins between the KRIM_ENTITY_T and KRIM_PRINCIPL_T tables.
I fixed this by modifying it to use an "IN" clause in this case instead. While I was at it, I made this "Oracle safe" by detecting if there were more than 1000 items in the IN(...) list (which is oracles limit) and splitting them into multiple IN(...) clauses (OR'd together).