This series further massages the join code towards a clean shape. I was mostly motivated by seeing a cluster picking up an invalid (0) nr_copies. While this was related to most likely buggy master transfer handling and zookeeper issues I'd rather have the join code clean and defensive to not get confused by issues like this.