Размещайте DLL в отдельном процессе и обменивайтесь данными с помощью COM (или .Net remoting или веб-службы или аналогичной).
т.е. создайте хост-процесс a.exe, используя C # (скажем), который выставляет классы как объекты COM, классы, в свою очередь, вызывают методы / классы DLL. Зарегистрируйтесь как COM-объекты.
Затем создайте b.exe такой же (но с разными CLSID).
Теперь вы можете иметь разные конфигурационные файлы для a.exe и b.exe (в разных папках), но оба могут использовать службы DLL.
Вы также можете сделать нечто подобное, имея два внутренних веб-приложения и используя SOAP или что-то для общения с ними.
Но суть в том, что если DLL работает с web.config, вы должны поместить хотя бы один из них в отдельный процесс в отдельной папке.