Хотя сложности конечно есть.
Первая проблема в контроле версий собранных пакетов - это общая проблема динамических библиотек (решения тоже существуют для обычных библиотек в Windows ввели SxS, в Линуксе это решается через управление версиями в репозиториях. Но первый вариант привязан к винде и фактически сводится к хранению всех версий установленных библиотек, а второй требует четкой обратной совместимости и видимо не реализуем в случае ООП).
Сделать пакеты не зависимыми от ОС можно если формат использовать свой или один для всех систем (выбрать например ELF) и грузить пакеты вручную.
(собственно сам машинных код зависит только от процессора а не от ОС)
Независмость от целевой архитектуры уже не получится - тут только что-то наподобие FatELF (когда внутри файла есть код для всех платформ) но пакеты получатся большими, но не на столько - процессорных архитектур не так много.
Остается RTL (и не только а весь не полностью кроссплатформенный код) - с ней сложнее - большинство кода не переносимо. Тут я вижу 2 варианта: либо весь код RTL линковать прямо в исполнимый файл, либо делать сборки для каждой платформы отдельно (главное в обоих случаях обеспечить совместимость интерфейсов).