Veja como resolvi meu problema.
frontend name_of_frontend
bind *:20000-20010
default_backend servers
backend servers
balance roundrobin
stick-table type integer size 1k expire 3h
stick on dst_port
server name ip-address check maxconn 1
...
server name ip-address check maxconn 1
Willy advertiu em um comentário de resposta anterior que "não garantirá que cada cliente vá para uma porta diferente".
No meu caso específico, tenho controle total sobre meus 'clientes'. A única razão pela qual os estou apontando para portas diferentes no servidor proxy é para que eu possa identificá-los como clientes diferentes. Este definitivamente não é um sistema 'público'.