You use classic DisplayList, right. Then you need to optimise it's hierarchy. I have ran accross this too. Make less objects in the DisplayList, group them, if you can. Prebake textures, use less vectors. Use Bitmaps instead of Sprites, where possible. Prebake texts (TextFields) into Bitmaps if you can and it does not change very often (draw the TextField to BitmapData and then make a Bitmap with that BitmapData).
I have optimized this app a lot (no vectors, bitmap caching, display object pooling).
It works great even on old iPad 2 with retina.
I have noticed, that this "Calculating dirty regions" problem is just with really large resolutions (2560x1440) on Android. And it's totally random - sometimes "Calculating dirty regions" on same bitmap takes 0ms and sometimes even 100ms.