Okay still VERY WIP for clients sending actions to perform, *but* I've now seen clients at least send messages to the cluster, and receive a response, so that is progress.  Turns out, I forgot that until a server has bound to a transport, then messages sent to it basically drop off into the ether.  That's now not happening, as the client side has a timeout to fail and then move on to the next member in the cluster.  Lots more work to do (and some unit tests commented out), but this is good progress.
Okay, all perform action tests are working...but now the cluster test seems to have tilted towards failure.
Oh wow: realized that the leader was not stepping down when receiving a RequestVote or AppendEntries request.  Fixed that with a little refactoring, and bumped the rpcTimeout to 150ms. All tests pass!  Multiple times in a  row! With other tests in same run! Performance doesn't seem ideal (e.g, heartbeat is now 600ms), and the client scenarios really aren't effective (although they are working as written). Progress!