Не вижу смысла настолько абстрагироваться ибо вся бизнес-логика хранится в доменных моделях и использует репозиторий для персистентности. Как следствие, при переезде на новый фреймворк доменные модели можно прямо копипастить (иногда даже вместе с юнит-тестами впридачу) – а именно тут и закопана как раз основная работа приложения.
Конечно, придётся переписать не связанные с бизнесом куски типа роутинга/контроллеров/чего-то-ещё на новые – но ведь ради этих более новых и более удобных кусков и затевается обычно весь переезд.
Пишу только исходя из личной практики и того что видел.
То бишь, сначала следует составить максимально подробное описание – ради чего переезд и какой профит он даст кроме ощущения, что "мы пишем на чём-то новом".
В небольших проектах я наоборот часто сильно завязываюсь на фрейморк (кроме доменных моделей, которые суть POPO) – это позволяет использовать его преимущества на 146% – гораздо эффективнее, чем пилить "свой фреймворк для абстракции над фреймворком".