Как грамотно спроектировать структуру приложения?
ох что-то Вы не понятное пытаетесь построить. Судя по вопросу у Вас набор паттернов а не архитектура. Что Вы хотите получить в итоге? слоенную архитектуру? так она так не строиться. DTO  - это объект для передачи данных, он не хранит бизнес-логики, репозиторий и Active Record как правило не используются совместно. В общем судя из постановки задачи могу сказать что Вы не совсем понимаете как строить подобную архитектуру, поэтому рекомендую Вам вначале почитать про слоеную архитектуру (например у того же Фаулера), про модель предметной области, про DDD, а потом уже переходить к практике. Для начала можете пробежаться для начала по этим статьям:статья 1статья 2статья 3статья 4
Можно только сказать, что семантика папок верная (папочка вложена в другую папочку корректно)
А больше тут что сказать?
Намного важнее, чтоб вы следовали стандартам фреймворка, верно разносили логику по моделям, делали тонкий контроллер и т.д.
Обычно вобще логику диктует реляционная бд, если вы ее используете.
Верно построите БД, все само по себе и в коде выстроится.