Это вообще нормальная практика? Есть какие-то ещё варианты?
Блокировать потоки-обработчики запросов -- плохая, вредная практика. Потоки -- ресурсы не бесконечные, как сами по себе, так и вычислительные ресурсы, требуемые потоками. У вас просто появляется шанс, что всем запросам не хватит ОЗУ.
1 поток, обрабатывающий заказы по очереди. Это может быть 1 поток на пользователя, может даже не быть потоков как таковых: флаг, запрещающий создавать\обрабатывать заказы, при наличии неотработанного заказа у пользователя. Но чаще всего, это отдельный (микро)сервис, который собственно получает от веб-сервера заказы, складывает в очередь и уже с этой очередью работает.
Основная задача -- организовать очередь.