1) Можно попробовать справиться указанием для статических кусков памяти атрибута "Копирование при записи". Если четко идентифицировать, какая и где выделяется память — это несложно.
2) На reactos.com есть рабочий код загрузчика для NT (в архиве в ldr). Собственно, и первый совет тоже для NT. Но даже написание загрузчика не гарантирует успех, ибо кто и когда вызовет GetProcAddress — неизвестно, в том числе и из используемой библиотеки, а работа LdrLoadDll (которую она использует) основана на том, что одна и та же библиотека не загружена дважды.
3) Сделать COM-сервер (OUT) и запускать его при каждой необходимости. Ежели с умом — может оказаться самым простым вариантом.