Otherwise, you're probably left looking at the interprocess communication option he mentions; loading that many DLLs, I doubt it'd be much more effective.

Do you really need all of those DLLs at the same time, or could you do hit-and-run loading? (i.e. only loadlibrary the imagelist DLL when there's an active imagelist, and destroy it when it closes).
With that amount to be loaded in, as the guys says in the article - you're going to have to "improvise".