What you are describing is exactly what I've put as a future work. I believe that centralising contiguous-memory allocation will help implement a scheme where a free area of the CMA regions can be used for buffers, page cache, etc. Obviously, read-only pages would be preferred as they are trivial to discard but even dirty pages could stay in CMA managed regions of memory.
As I've said, this is, however, a future work. Hopefully, we'll get there some day. :)