You cannot magically fix this.
I have often used the comparison that any nonlinear numerical optimization routine is comparable to setting a blind man down on the face of the earth, and asking him to find the spot lowest in elevation. And this fellow is allowed to use only a cane, to determine the local gradient of the surface. (I'll allow him to carry scuba gear in his journey.)
Do you think, if I set him down in some random spot on the earth to start his search, he will find a spot in the bottom of the Marianas trench in the Pacific ocean? If you do, then you may be a bit of an optimist. (No visually challenged individuals were harmed in this thought experiment.)
And that was just a 2-dimensional problem. Your problem lives in 3 dimensions. As you move up in dimension, problems ALWAYS become more complicated. And most nonlinear problems have multiple solutions. (There is a simple correspondence between minimization and nonlinear rootfinding.)
So wanting a numerical optimizer to find always the solution you want it to find is a bit, well, I'll call it wildly optimistic.
Asking how to choose "correct" points is just silly. Sorry, but it is. No better than asking how to somehow know the best place to set my blind person down on the earth to solve his task, while lacking any detailed knowledge of geography. Do you really expect a good solution to arise in that case?
The point being, when you change the starting point, fsolve can sometimes get stuck. For example, put our poor blind searcher down in the vicinity of the Dead Sea, and while he will find a low spot that is under water, it will not get him into the Pacific ocean. He will get stuck. And there are various ways he can get into trouble, just as there are various ways a solver like fsolve can get into trouble. Start in a bad place, expect garbage for a result.
The point is, if you want a good solution, then you need to provide intelligent starting values. Or else, accept what you get, and if you are unhappy with that result, then choose better starting values next time. Multi-start methods do exactly that. You start from various locations, hoping that one of the solutions returned will make you happy.
But I am sorry. There is no magical way to automatically choose the "correct" starting values. (Again, remember that even though I described this problem in terms of a minimization, that there is a simple direct correspondence between rootfinding and minimization.) For low dimensional problems, there are graphical methods that can help you to find intelligent starting value choices. But even they are not infallible. I can always give you a problem that will cause any such method to fail.