haproxy is amazingly functional and has done a fine job of evolving over the years. At a particular $DEFUNCTCLOUDVENDOR we implemented a haproxy based ELB-ish solution with home grown control logic to replace a F5 installation whos configuration size grew unwieldy (the F5 config parser was falling over in their LBs) while we were nowhere near the F5's touted connection/throughput numbers. F5 wasn't really willing to work with us on licensing, so we implemented a system based on haproxy VMs that worked because we were more than a bit overprovisioned on switching capacity and were able to shard that configuration base more effectively over more VMs.
This was 2011, so I'd hope newer F5 gear has gotten past that.