Make reverse routes always use the first matching route

Fixes #3050. The previous way of removing the extra routes would prioritize the last matching route as opposed to the first one. Now it should work the same as in 2.2, but without the warning.
Ah, now it makes sense why we were using a `ListMap`. I think it would've been easier to just reverse the list before creating the `ListMap`.

I'll submit a PR to fix.