Can I edit the batches received by SQL Server on the fly?
Is there a way to administratively substitute the queries submitted by the application for other ones? 


No, the closest you will get with out of the box functionality is what a plan guide can do.


  I am imagining some sort of regex match performed against the batch if the application name matches.


Nothing native inside of SQL Server can do this, currently.


  Can I edit the batches received by SQL Server on the fly?


Unfortunately (or fortunately) there is nothing built in to do this. I don't want to give you any ideas but you'd need to have a middle layer between the application and the database server. This intercepting application would need to understand TDS (which is the protocol used with SQL Server) and allow you make changes to (or, again, not) the TDS packets to change the queries on the fly.

If you made this, you should sell it :)