Спасибо за толковую идею!
Реализовал требуемый функционал через WebView + FrameLayout.
В WebView создал дочерний FrameLayout, а уже во FrameLayout добавил все свои View. Получилось неплохо: работает прокрутка во все стороны (пропадает смысл использовать ScrollView), работает масштабирование (Pinch Zoom) — и все без особых тормозов. Единственный минус — не могу никак отследить коэффициент масштабирования WebView, чтобы пропорционально увеличивать собственные View.
Картинку нарезал на тайлы. Для 4096x4096 на реальном устройстве нарезка занимает примерно 10 секунд. В принципе, ее можно вынести в отдельный поток, перезагружая WebView по мере нарезки.