Okay, this is a lot more subtle than I thought. I believe your proof now. I *think* the problem is that it doesn't actually apply to the original problem.
In your proof, you imagine choosing S and T to be whatever you want, and then drawing a random function, and asking about the probability that that random function is consistent with S and T. In the actual problem, you draw a random function first, and then set S and T based on the random function. Since there's no communication allowed after the game starts, this sounds like the same thing, but I think it's not. For example, if you could set S and T such that S contains f(1) and T contains f(2), the probability would be 1. Obviously you can't do that, but the solution could potentially exploit some structure in f after it's been drawn. That is to say, you set some algorithm, then draw a random function f, and then run the algorithm on f to somehow generate S and T. I'm convinced this is different from what you do in your proof, but it's hard to say more without giving away the answer.