Can you give an example of where you've had to use $watch? Usually too many $watch is an indication that you could improve your app's architecture, e.g. by abstracting into directives.
FWIW I'm only speaking from personal experience and in your case lots of $watch might be necessary.