I found a solution that seems more flexible architecturally than app session, and since the data may change it will update the data when the forms are reloaded.
Upon reflection I realized that I'm not so much concerned about fetching the data only once in the session (and it may change in the background anyway), than with avoiding repetitive coding of the fetch in every controller.
So creating a service and using dependency injection to inject it directly into the _Layout view (or a partial view called by it) seems like the perfect solution. I never have to touch a controller to provide this data in a side panel throughout the website.
This link provides an easy-to follow example:
Injecting Services Into Views — ASP.NET documentation