This patch fixes a potential exponential behavior due to no memoization in a DFS.

For example, consider such a graph:

ret -> a0, ret -> b0,

a0 -> a1, a0-> b1, b0 -> a1, b0 -> b1,

a1 -> a2, a1-> b2, b1 -> a2, b1 -> b2,

a2 -> a3, a2-> b3, b2 -> a3, b2 -> b3,

...

If this DAG has n layers, the all paths WalkChainUsers will walk through is O(2^n); after memoization it will be O(n).

There is no functional change.