Se me había ocurrido que con un SurfaceView encima de un ImageView e ir haciendo partes del SurfaceView transparentes se podría hacer, y buscando como hacerlo me he encontrado con esto:
https://github.com/winsontan520/Android-WScratchView
Que hace justo lo que quieres y como había pensado, poniendo un SurfaceView (el WScratchView) encima del ImageView.