Буду краток, проблемы в вышеперечисленном нет, единственное нужно организовать правильно интерфейсную часть, т.к. модули разные и данные у них тоже разные, ядро должно уметь понимать их всех и соответственно все возможное должно быть реализовано в интерфейсе, а далее общение с модулями происходит через интерфейс и ядру не важно что реализовано в самой Dll, главное чтобы она общалась с ядром через этот же интерфейс.
А вообще практического смысла в абсолютности нет, модули нужны но не везде.