Thanks for the suggestion on how to improve the programmer.
We never had much hope of being totally AVRISP v2 compatible. Our programmer uses a different set of frequencies for programming. Also, in recent firmware versions we have changed the signature from "AVRISP_2" to "STK500_2", so it is not even identifying itself as an AVRISP v2 any more. This was necessary to support AVR Studio 5 and Atmel Studio.
Please note that keeping your AVR in programming mode for long periods of time can be dangerous; if your batteries wear out or the power gets disconnected during that time, it is possible that your AVR's fuse bits could be corrupted and it would become unusable.
Your idea of sending a keep alive command from AVRDUDE would work. The 1.4 second timer gets reset after any STK500 command, even if the command byte was not recognized. I would recommend sending a CMD_GET_PARAMETER command that reads the PARAM_STATUS parameter.
Have you contributed code to the AVRDUDE project before?