Live configuration via the stats socket is frequently overlooked, but works a treat. I'd recommend investigating it before giving up on haproxy.
Yes, though a bit of advanced planning and creative configuration can usually work around this limitation.
Making the assumption that new servers and services occur within a predictable range of IPs and ports (or have their own haproxy to route within the server), you can create a list of backend servers which are all disabled and just waiting to be individually enabled.
I've done this in the past, and the disabled server entries never seem to have a negative impact on HAProxy. It also has the advantage that you can set your HAProxy instances to peer with each other, so the change only has to be made once to propagate to connected instances.