If you want to continue with the approach of getting the attribute list off of the first user, allowedAttributes is probably the way to go. However, you may want to consider paring down the list to the stuff you really want. For example, do you really need to read the security descriptor for every object? Probably not unless it is needed. Those are big, so you can waste some bandwidth and perf pulling them down for no reason.
Overall, this isn't an easy problem to solve in general so the best thing to do will apply to the specifics of your situation.