"Single IP from the proxy" - this sounds like you're looking for DHCP services. Are you interested in assigning a new IP address to a single individual on a daily basis? If so, then DHCP is what you need to be looking at. That's not the function of a proxy.
Hide Header Information - What do you want to hide and from whom? You can get proxies that strip or replace both request and response headers, but do note that this is a violation of the HTTP protocol standard.
Identify proxy from the receiving server - Per the HTTP protocol standard, HTTP gateways and proxies must insert a Via: header in the request/response chain. By inspecting these headers you will be able to identify any [properly behaving] proxy that handled the request.
If you want stable, fast and free then Squid will fit the bill, but if you can give more information on exactly what you want to accomplish and a little more explanation of the above it would help us to give a more definitive answer.
Toward your comments, what you're looking at with the single IP address bit is called NAT (Network Address Translation) which is typically not handled by your web proxy. I'm not sure if there is a Squid module that will allow it to do NAT, I've never used Squid for it. NAT is usually performed by your border device (firewall, router, etc).
It's possible to disable the Via: header in Squid in the squid.conf config file (see the docs) but, again, it's not necessarily the best idea. If you want to completely mask that you're using a proxy then you'll need to use this option, along with NAT (which you might already be using anyway).
The destination server will see the request come from the public IP of either your NAT device (ie- firewall or router) or your proxy, whichever you have sitting in between the Internet and your network. Your client's IP will only be seen by the destination if it makes a direct request using a public IP and there are no other proxies or gateways in between.