The GL.iNet AR300M16 or AR300M (which has 128 MB NAND as well, as I recall) would be high on my list, but they're significantly more expensive (about $32 and $40, respectively). The AR300M-Lite is a great value.
I haven't used any of the MediaTek devices, so I'm not as comfortable recommending them as I am with devices that I own, or at least chipsets that I've worked with. That said, I've been tempted by the MT300N-V2 several times and it does have two Ethernet ports. There are many MediaTek-based devices that others seem very happy with.
Keeping around US$20 requires either cheap components and production, or intelligent product and engineering decisions. I much prefer the latter! The fewer components, the lower your production costs are and those silly Ethernet sockets are comparatively expensive both by themselves, as well as in terms of board space (per-sq-cm costs) and other indirect costs.
Once above the US$20-40 range, there are many options that offer more than one or two Ethernet sockets. Another option would be a USB Ethernet dongle, which run under US$20 these days from reputable manufacturers.