Привет! Всегда формы строю на основании как ты выразился - InputDTO, там же и ассерты, далее эту дтошку прокидываю в хендлер, и из неё заполняю сущность. Лишняя прокладка как ты сказал имеет свои преимущества:
1 в ui ты не тянешь весь агрегат со всеми вытекающими связями, лейзилоадами и прочим, выборка только необходимого здесь и сейчас
2 дтошку можно вызвать из любого места, будь то комманда, апишка, тесты, или контроллер с твигом
3 эту же дтошку с её хендлером можно добавить к примеру в очередь, да и вообще вызвать такого рода "лишнюю прокладку" можно из любого места - заполнил дто, прокинул в хендлер
4 ну и разделение кода позволяем иметь маленькие классы которые легко как читать, и так и рефакторить
имхо, никого не принуждаю