Так и делал: экстрактировал интерфейсы из ядра в отдельный Composer-пакет, который в свою очередь рекуайрится и ядром, и бандлами. Бандлы на своей стороне либо 1) имплементят интерфейсы , чтобы стать tagged service внутри ядра, либо 2) инжектят интерфейсы из Composer-пакета, чтобы юзать сервисы ядра ( БД и т.д)