To answer the first question, when the job fails, you can shout to a shout destination defined as a program (i.e., instead of destination type 'M' for Mail, use 'P' for program). Then create a script to run the ctmpsm utility twice, once to hold the job, the second time to delete the job.
In the message of the shout to the 'P' shout destination, pass the %%ORDERID of the job. This will be received by the script as the second parameter.
Look up the Control-M utility guide for the syntax of ctmpsm.