Se me ocurre algo que no sería muy dificil de implementar:
Que el proceso "guardian" envíe un mensaje al proceso que se vigila, y espere el tiempo que te parezca razonable por una respuesta. Si no la recibe en ese tiempo, podrá asumir que el otro está bloqueado, matarlo e iniciarlo de nuevo. Para esto, podrías valerte de la propia mensajería de windows... así, resulta bastante sencillo de implementar.
Hasta luego.