The idea of the library in the code is simple. It's impossible to prevent the use of DMA by other libraries that don't request it, but at least for the ones that would introduce those changes it's possible.
There are at least two ways for a library to select different DMA channels, one is the "static" one, like Paul does in the Audio library. It uses macros to select the correct channel. The channel number has to be in the code at compilation time, so the user has to actually change it.
An other way is in the ADC library (RingBufferDMA.h/cpp). You can get the correct channel registers by adding the offset depending on the requested DMA channel number. The problem is that you can't do this for the isr (or can you?). The solution is to move the vector table to the RAM and introduce your function in the correct "slot" for the channel. For that we need the vector table code in the core library (and even better some mechanism like the one I propose in the DMAControl to assign channels to libraries).
The code is not complicated, but any change to the core library has to be well tested I guess. So Paul, maybe can we get the vector table thing for the next update and think about the DMA in the near future?