Application start was really created for purposes like that. If you are just populating things from the Web.Config why not create a class that pulls them directly from there if you are worried about abstraction? It's already cached by ASP.Net, so you aren't paying a penalty from accessing the web.config multiple times. This way you don't have to worry about using the Global.Asax which you seem to be against.
If you are really against using the Global.Asax, you could always have a method that checks to see if they are loaded on the landing page on your site, or have a method in the master page that fires each time a page using it is accessed. I would still use the Global.asax Application_Start or Session_Start myself though.