There should be a two-prong approach here:
1) The Exchange database agent. In both a stand-alone and the DAG client varieties, this will allow the best way to protect Exchange DBs, where:
a) Exchange is aware of the backup, b) Exchange can truncate itself after the backup (Important to know that's a native function, not a CV one) and c) with restores, it will bring a DB back online automatically, etc.
There's also additional features such as message level recovery, etc.
Backing up Exchange databases with the file system agent or the VSA agent, while possible, isn't going to be a "supported" version of a backup/restore as it's the equivalent of copy/pasting a database while it's live. As you seem to understand already, Exchange wouldn't have any idea of what's going on, and truncation would never occur.
2) A VM level backup, where the volumes housing the databases are excluded. This will provide a snapshot level backup of the VM, where if the machine is lost, it can simply be put back. You would then restore the databases from the database agent.
As far as your installation questions, the exchange agent goes on the Exchange server(s).
The only reason the media agent package would need to be on the actual Exchange servers would be if you're using Intellisnap or application aware, which is most configurations would provide less features. The DAG client is vastly superior in effecency, if you are in an Exchange DAG configuration. Unless both the VMs and the databases are on a hardware array that can provide snapshots, these other options tend to offer less.
The VSA proxy leverages the media agent package, that's correct, so it will be needed there as well.
All agents discussed here support deduplication as well.
If you're already doing VSA level backups of these machines, you should only need to configure:
1) Setup the Exchange database agent on all exchange servers, configurre DAG client if DAG present. Setup schedules, etc.
2) Remove the database volumes from the VSA backup, and set the subclients holding the servers to "crash consistent".
Hope this helps,