When in doubt, it's ngAnimate's fault. I've developed two angular apps, one web and one ionic, and both of them when profiled the CPU typically spends 95% of the time doing unnecessary ngAnimate css computations, generating callbacks/promises/timeouts, etc.
Try adding this in your config block (inject $animateProvider first, obviously). It will make it so you need to have an 'angular-animated' class applied to an element for ngAnimate to do its thing, turning it into an opt-in system instead of constantly analyzing every DOM change.
$animateProvider.classNameFilter(/\bangular-animated\b/);
This one change gave me iOS-like performance on my ionic app when built for android. It might cause problems with ion-nav-view's transitions, I haven't tested it with ion-nav-view because I implemented my own navigation solution due to ion-nav-view's completely broken support for child states/views