It’s possible to make the GL.ReadPixels (GraphicsDevice.GetBackBufferData) call faster by using PBO’s (PixelBufferObjects).
I roughly described that in this post:
Here is the technical description:
However we need to implement some missing things in the MonoGame.Framework first like the GL_PIXEL_UNPACK_BUFFER buffer target.
To get around the performance issue in your current solution you could work with intervalls.