I'm afraid I can't help much, but I thought I'd point out that, if you haven't been given f(0) = 0 you can't assume that from x = y = 0...

f( 0*f(0) + 0 ) = 0*f(0) + f(0)

So f(0) = f(0), not necessarily f(0) = 0.

-Dan

Edit: Perhaps we can do this. Let y = 0. Then f( x*f(0) ) = f(0). Now, we can't say that f(cx) = c for all x because of the other relation you stated: f( x(f(x) + 1) ) = (x + 1)f(x) because c is not equal to (x + 1)c for all x. Thus c = 0 is the only solution making f(0) = 0.