The answer is no, not necessarily. For a counterexample, let $f(x,y)=0$, if $x$ is a Turing machine program that halts on $x$. Otherwise, $f(x,y)$ is not defined. This is computable, since on input $(x,y)$, I can run $\phi_x(x)$, and if it ever halts, then I output $0$; otherwise, keep running it. Notice that every $f_x$ is either the constant $0$ function or the empty function, depending on whether $x$ halts on $x$. So there are only two functions that arise as $f_x$. But if there were an $r$ with finite range such that $f(x,y)=\phi_{r(x)}(y)$, then some $\phi_{r(x)}$ are the constant $0$ function and some are the empty function. With a finite look-up table, we can know which of those values are the constant zero function and which are the empty function. Thus, if there is such an $r$, we can solve the halting problem by inspecting $r(x)$. Contradiction.