Sometimes, the random selector quickly advances to an odometer from which all further progress seems to be barred. Thus, all remaining search cycles are wasted searching and re-searching this impossible odo. There needs to be a way of detecting this impossible condition, and backing up a level.
In particular, this seems to always happen after one solution is found; a second solution is never found...