Ответ на ваш вопрос: потому что обработчик всегда попадает в верхнюю функцию, т.к обработка событий в 1 и во 2 функциях идентична— по тексту сообщения, а первая функция выше по стеку, она и забирает постоянно все управление на себя.
Совет 1. Навешивайте декоратор на функции, вида:
@dp.message_handler(params)
Если прям сильно припрет, то в params можно даже лямбдой отфильтровать ваши текстовые ответы от юзера, наподобие вашей задумки.
Совет 2: постарайтесь не использовать try except, он долгий и не особо тут кстати. Обычного if else за глаза хватает.