I decided to see what would be the best way to come up with the information we need for this kind of query. Here is what I got.
This is using a select object style to get a complex projection back from the server. Here are the results:
As you can see, we are able to get all the data we want, in a format that is well suited to just sending directly to the UI with very little work and with tremendous speed.