random walk: use reservoir sampling to pick random successor
it is the only sane way to have decent semantics in presence of edge restrictions, without having to visit twice all successors