Squash, refactor, and test !139 (Don't use same family as exit when picking a guard)
This addresses but (as noted) does not completely fix #183 (closed) . It is based on @neel's patch from !139 (closed).
There's enough changed here that I should request another review before merging.