Hey guys,
Just for the update, the performance issues I ran over were not directly caused by several watchers. I think JS execution is really fast and just watching an object's updates can't slow down an entire application.
But in my case, I'm working on a very low-end device, so what's really slow my app isn't angular itself, but the way I articulate it, the way I organize my application code. I studied more deeply my code and really understood that you shouldn't let Angular do a lot of stuff for you, unless you need it, but everything is a matter of compromises :
1) The complex the DOM tree is, the slower the rendering will be: you must light as possible your DOM tree, playing with CSS and neat templates
2) If your templates are kind of 'static' (won't really change, won't be updated by some user action), I recommend to avoid write them with a lot of angular bindings, e.g with a lot of ng-bind and {{ myModel }}, because yeah it will increase the amount of watchers in your app. Few is good but maybe it's not very scalable. Instead, use some third-party templating system, pre-compile your templates, and put them in your ng-repeat for example, within a directive. It works like a charm for me (I created a directive called <doT template-id="xxx"></doT> wich will compile the referenced template with the current scope)
3) Pay a special attention to reflows: on low-end devices, cache your nodes when possible, cache your calls to offset[Left, Right..], scroll[Top, Left...]. Thinking the way you touch the DOM can prevent a lot of unnecessary reflows.
So that's the spirit, and I think working with the power of Angular with certain difficulties like low-power devices will improve your front-end skills, because it's not only a matter of using all your framework features, but you'll have to be smart at coding the entire ecosystem of your app (HTML, CSS, Graphics...), and use only what you need in Angular.