Let me loop in @Phil_Seeman or @Frederic_Malenfant who could provide a better answer than I could. Maybe caching results could help, but would be more work.
But related, I actually created an alternative view that has a bit of what you’re considering, so perhaps you’d be interested to check it out for ideas (though not exactly the same, so I’m not recommending it instead):