Make router_choose_random_node() linear instead of quadratic

See parent for motivation.

The smartlist_subtract() function is O(m*n), so we should try not to use it here if we can.

To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information