Since you use queues in ActiveMQ as your dead letter queues, then you can use any kind of AMQ tool to remove those. Or use some Java code with JMS API to remove the messages etc.
For example if you use JMX then you can from the JMX console remove / purge queues in ActiveMQ.
Thanks to extended functional requirements I now have to actually process all messages, so the updated scenario becomes like this:
The MAIN processor throws several different types of exception.
The processor in the route after the MAIN sends "ok" message to the log-queue.
Route-level onException handlers redirect failed exchanges to separate amq queues.
The consumers get the messages, send mail to users or admins or developers and send the notification to the log-queue.
The consumer from the log-queue stores "error" messages to the database (using ibatis) or erases all related records from the db when it gets "ok" message.
Still, it could be a good idea to have a camel component which can manage activemq (remove/update messages using selector+instructions in the body/headers).
(Just got to my own thread looking for something...)
Currently I do not think it's a good idea anymore.
Good read on why it's not and why I should have used a db instead: http://java.dzone.com/articles/messaging-anti-patterns-part-1