There are indeed several solutions to implement load balancing:
- DNS Round-Robin
- DNS Load Balancing (with lbnamed)
- Proxy Round-Robin
- Hardware/TCP Round-Robin
I understood 1) and 2) are not an option here so... if you have money and really high performance needs, go for 4). Else, go for 3).
For Proxy Round-Robin, again, several solutions are possible: Apache mod_rewrite, Apache mod_proxy, Squid (and surely many others I don't know).
For "dumb" load balacing, there is an example in Apache mod_rewrite's URL Rewriting Guide (see Proxy Throughput Round-Robin section).
Apache mod_proxy can act as proxy to connect clients to the internet but is usually used as reverse proxy to redirect an url to another server. It has no cache functionality (but can be used with mod_cache, and mod_rewrite...).
Squid is a proxy cache and is usually used to connect clients to the internet. But it can also be used as reverse proxy and be configured to cache the requests and to accelerate content delivery.
As you can see, choosing one of them depends on what and how you want to proxy. In your case, I would consider running Apache mod_proxy or Squid if you want caching on Linux (if it is an option).
Regarding the hardware, I'm not a specialist but I think a "small" to "medium" dedicated server should be enough. Just don't forget all the requests will go through this machine so its sizing highly depends on your traffic which seems decent. This might require some digging with real life data.