Как правильно организовать маршрутизацию Express?
Не скажу как надо "точно".
Но скажу как не надо.
0. Не надо регистрировать медленные и редкоиспользуемые обработчики раньше чаще вызываемых и более критических. Но надо блюсти зависимости. Помните - роутер регистрирует обработчики в листе(ок - массиве) и вызывает последовательно, в том порядке -  в котором они были зарегистрированны.
1. Не надо ставить express-static/serve-static перед осовной логикой  как советует dummyman (реальный ник). Выже не хотите, чтобы нода ходила на диск проверяя наличие файла каждый раз, даже когда надо всего лишь вернуть находящийся в памяти объект?
2. Не надо упускать обработчики 404 и 500. А то клиенту будет больно, а вам чуднО.
3. Не надо упускать, что nginx раздает статику офигенно быстро - ведь он использует sendfile тогда как нода будет 
читать с диска и писать в сокет по кускам. 
Не надо верить dummyman что nginx не умеет кэшировать статику.
Не надо верить мне - освойте ab (можно и strace чтобы офигеть как круто работает nginx со статикой).
4. Тут еще было про SO_REUSEPORT но это будет немного оффтопик.
Вся прелесть ситуации что все контролеры что перед login работают адекватно. Тогда, возможно, ошибка кроется в роутере подключенном непосредственно перед login.
Не вижу у вас подключенного errorhandler, он бы помог локализовать ошибку.
для статики используй serve-static
вместо друшлака bodyParser используй body
вместо logger все уже года три как используют morgan.
Формочку входа прикрутили а где же обработка сессий? вот тут