Crossroads can maybe be subbed for Scrying Pool in the solution on the blog. The analysis becomes annoying though (because you need O(log x) Crossroads to draw your deck, then one Crossroads per batch of new cards, and then you need some amount of new ones). So there might be some loss in the goodness of the solution.
Crossroads doesn't make the solution any worse, but indeed the analysis is a bit annoying, which is why I don't mention it. Let me sketch a proof (feel free to PM me about details):
Suppose with a hand of x, we can gain c*x cards, where c < 1. We're aiming for a multiplicative factor of k=1/(1-c) each turn.
First, we prove that instead of going from x to kx, we go to kx - O(log^3(x)). In fact, kx - O(log^2(x)) if you're careful on the analysis.
To do this, let S_i be the number of cards we have at iteration i. So S_0 = x, and S_(i+1) = c S_i - log(S_i). We want to lower bound sum_i=0...log(x) S_i. Show by induction that S_i >= c^i x - i log(x). The result follows from that. You'll have to use the fact that the S_i are decreasing, so S_i <= x.
So does x still grow as k^n? We're now interested in the recurrence for number of cards per turn, T_i = k T_(i-1) - log^2(T_(i-1)). Similar recurrence, but slightly harder since the terms are growing. Prove by induction that T_i >= k^i - (i-1)^3 * (k^(i-1) + k^(i-2) ... + 1) * log^3(k). The proof is just a bunch of algebra. For k > 2 (actually, it's sufficient to have k-1>log^3(k)), this is dominated by the k^i term for large i, so we have that T_i = Omega(k^i), as desired.
Okay, so this basically proves it, except that there's a Crossroads specific detail we're ignoring. In order for O(log x) Crossroads to draw the deck, a constant fraction of our deck has to be Victory cards! Luckily, this analysis doesn't care what the base of the log is. This means it doesn't matter what the density of the Victory cards are: as long as it's any constant fraction, Crossroads is good enough to get the exact same result. So we've in fact proven that Crossroads can get (k - epsilon)^i, for any epsilon.
But truly getting k^i is not any harder. Just have O(sqrt(n)) Victory cards and O(sqrt(n)) Crossroads, or something like that. The analysis is no harder than what I just did. Similar analysis, by the way, shows that when you have Seaside, you can use Caravans/Wharves to smooth out variance and get probability 1. But it's easier and nicer to describe using Haven, put-back cards (e.g. Courtyard, Mandarin), or discard-and-draw-tricks.
Crossroads and Scrying Pool are AFAIK the only way to draw a non-constant amount of cards.
I realize Jomini has noted some of these things, but, just to be exhaustive: Scrying Pool, Crossroads, and Madman all draw unboundedly many cards. Technically, Cellar, Storeroom, and Library can also draw arbitrarily many cards, although they don't increase your hand size arbitrarily. I suspect arbitrary hand-size increase is closer to what we care about, in which case Native Village and Counting House work. Lastly, Apprentice deserves honorable mention because its text doesn't preclude it from drawing arbitrarily many cards, and it's possible for this to happen with introduction of new cards.
*Technically, a single play of Forge or Count could cause an unbounded hand-size increase, with Cultists in hand, but this is less interesting since it ultimately requires a linear number of cards to draw. With infinite players, a Jester+Watchtower can also gain us infinitely many Fortresses in hand...