I haven't looked at the code, but this is what they say:
> Katran uses an extended version of the Maglev hash to select the backend server. A few features of the extended hash are resilience to backend server failures, more uniform distribution of load, and the ability to set unequal weights for different backend servers.
GLB also does the same thing with caching:
> The hashing to choose the primary/secondary server is done once, up front, and is stored in a lookup table, and so doesn’t need to be recalculated on a per-flow or per-packet basis.
GLB has that primary/secondary thing which seems to be how it better handles backends coming and going.