Hi Ekelund,
It does seem a little complex, and doing separate lookups for each row of data in a gallery does tend to be slow as PowerApps has to run a separate query for every single row of data in there, in the context of that row. If it's running a main query to get the data from source, then multiple queries per row of data returned, from another source - well, you get the picture, otherwise you wouldn't have posted this 🙂
The other thing is, what kind of errors are you getting? Are they delegation warnings or list view threshold errors?
Without knowing this, there are perhaps a few things I can suggest you try, although I can't say if any of them will solve your current issue;
First - if you haven't already, perhaps make sure all your lists have an index - preferably on a column you typically use to Filter/LookUp. You can do this by going to the List settings in SharePoint and selecting "Indexed Columns" and then "Create a New Index" and select the column you want to index.
Second - assuming you might be getting delegation warnings, try to avoid complex objects for functions in your filter/lookup conditions - by this I mean pretty much anything in your conditions that you are referencing as a property of an object or are applying a function to - like User().Email or ThisItem.Something.Value or even functions applied to values.
This sometimes presents delegation issues as SharePoint can't do anything with the object or function it can't understand (that isn't "delegable"), so powerapps will fetch the first 500 rows regardless of condition, then resolve the condition object/function, then apply the filter/lookup condition on those 500 rows.
Lastly, try use collections where possible to prepare results you might be expecting - Your app looks fantastic, I assume you must be familiar with collections, but if not it might be worth looking into - for example, your filter of accounts based on the user could be done up front and stored in a collection (assuming of course the results are less than 500 rows :)) - it might be slow while creating the initial collection, but subsequent galleries using the collection would be much faster, and you may find you can collect stuff on one screen that you will use on a later screen, making the user experience a little better.
All in all it depends a lot on what the user story is and how you get them to the data they need as fast as possible - while we as creators of the app can prove we have the data by presenting a gallery with thousands of rows, does the user need them or use them, or can we present them with the data they're looking for faster and easier (for us and them)?
That's about all I can think of for now, let me know if anything here doesn't make sense and apologies up front if it doesn't solve your problem, but perhaps you can post the errors and we can try see exactly what's happening?
Hope this helps anyway 🙂
RT