If anyone is interested, here is a proof that $f$ vanishes only at $0$, copied from my post on AoPS.
Let $S=\{x\ne0: f(x)=0\}$, and suppose $S$ is nonempty for the sake of contradiction. (We assume $f(0)=0$ and the reduction posted earlier.)
For nonzero $x,y$, let $P(x,y)$ denote the assertion $f(f(x)y+x/y) = xyf(x^2+y^2) = f(f(y)x+y/x)$.
(1) $P(x,1)\implies f(f(x)+x) = xf(x^2+1) = f(x+1/x)$, so $s\in S\implies s^2+1,s+s^{-1}\in S$.
(2) For $s\in S$,
$$ P(s,y)\implies f(s/y) = sy f(s^2+y^2) = f(f(y)s+y/s). $$ In particular, $P(s,-y)$ reveals that $f$ is odd. Also, if $t\in S$,
$$ P(s,t)\implies f(s/t) = stf(s^2+t^2) = f(t/s), $$ so $P(s+s^{-1},s^2+1) \implies f(s^{-1}) = f(s) = 0\implies s^{-1}\in S$ (according to (1)) and $P(s,s)\implies s^2f(2s^2) = f(1) = 1\implies 2s^2\notin S$.
(3) If $s,t\in S$ with $t>s^2$, then
$$ P(s,\sqrt{t-s^2}) \implies \frac{s}{\sqrt{t-s^2}}\in S\implies \frac{\sqrt{t-s^2}}{s}\in S. $$ Combined with (1), this gives
$$ \left(\frac{\sqrt{t-s^2}}{s}\right)^2+1 = \frac{t}{s^2}\in S \implies \frac{t-s^2}{s} = \frac{s}{(s/\sqrt{t-s^2})^2}\in S $$ as well. Now WLOG fix $s\in(0,1)$ (if necessary, we can replace $s$ with one of $\pm s,\pm s^{-1}$, since $\pm1\notin S$). Then $t=s>s^2$ yields $\sqrt{s/(1-s)},\sqrt{(1-s)/s}\in S$ and $1-s = (s-s^2)/s \in S$ (from the first and second implications, respectively). But then (1) forces $(1-s)^2+1\in S$, so if we take $t=(1-s)^2+1>1>s^2$ instead, we get
$$ 2\frac{1-s}{s} = \frac{(1-s)^2+1-s^2}{s} \in S $$ from the second implication. Finally, (twice) using the fact that $uv^2\in S$ whenever $u,v\in S$ and $uv^2\ne0,\pm1$ (*) twice, we first obtain $$ 2 = \left(2\frac{1-s}{s}\right)\left(\sqrt{\frac{s}{1-s}}\right)^2 \in S, $$ and then $2(s^{-1})^2>1$ must lie in $S$, contradicting the end of (2).
Edit (thanks to tenniskidperson3 for pointing out). (*) was originally incorrectly stated and missing proof. Here's a proof: By the second implication in (3), we know that if $u,v\in S$ and $uv^2>1$, then since $1/v\in S$, $u>(1/v)^2$ gives $u/(1/(1/v))^2 = uv^2$ in $S$. If $u,v\in S$ and $0<uv^2<1$ instead, then since $1/u,1/v\in S$, we have $(1/u)(1/v)^2>1$ so $(1/u)(1/v)^2\in S$ by the previous sentence, and then the inverse $uv^2$ must lie in $S$. If instead $u,v\in S$ and $uv^2<0$ but $uv^2\ne-1$, then negating $u$ shows from the previous two sentences that $uv^2\in S$.