I think I found the reason why ArduinoISP sketch is slow.

There is a delay(20) in heartbeat(). This is what slowing the sketch down.

The solution to this problem is get rid of the delay() and re-implement the heartbeat using millis(). My M184v1 Arduino-based AVR ISP is now shipping with this slightly modified ArduinoISP sketch.

Have you looked at the ArduinoISP sketch included with ArduinoIDE 1.6.6? It doesn't use delay() in the heartbeat.