This sounds complex and I'm not sure I get the logic. I'd really just do:
a) take as many storage nodes as possible for monitor (unless we prefere controller nodes, in which case swap steps a and b)
b) if we don't have two, then complete with as many controller nodes as possible
c) if we still don't have two, then complete with normal nodes