What port a response is assigned is up to the application. UDP is completely stateless, so after firing off a packet the only way an application can expect a response is if it knows the other end is going to send one. Depending on the UDP application, I'd expect that the response would come on the same port for simplicity -- this is not the case for protocols like TCP, which have an intentionally random (and high) source port.
To answer your second question, many routers, even inexpensive home routers, do stateful packet inspection (SPI). Something like this likely happens, but I'm up for being corrected if I'm off:
[Set stage with client, router, Internet, server.]
- Client emits UDP packet.
- Router passes UDP packet to the Internet.
- Router remembers that client sent a UDP packet to server, and establishes a mapping in its memory.
- Server sends a UDP packet, probably on the same port.
- Router receives packet, and checks mapping to find client talked to server recently.
- Router passes packet to client.
How this is implemented is specific to the router, I'd imagine, but that's my understanding of how it works.