Why not just forget about the symbolic toolbox. Declare your sub-equations and your final equation as normal anonymous functions instead of symbolic functions, which fzero can work with anyway. These have no problem appearing recursively:
y = @(x) sin(x)+cos(x)
z = @(x,y) -sin(y)+cos(x)
m = @(x) y(x)-z(x,y(x))
Sometimes anonymous functions have trouble when you want to call them with array inputs. In this case you can wrap them using the function called arrayfun, or you could declare your subfunctions in their own m-files.