Hmm. Well. I think you basically just want to shake the "camera", right?
Theres a number of different ways to do this, the "best" way would be to alter a "view matrix" and passing it into the spriteBatch.Draw(.,.,.,.,.,.,.Matrix translation) method. Essentially all this would do would alter the position vectors that you pass
in. So if you wanted to do that I believe the Matrix is created like this:
Matrix projection = Matrix.CreateOrthographicOffCenter(0, game.GraphicsDevice.Viewport.X, game.GraphicsDevice.Viewport.Y, 0, 0, 1);
Matrix halfPixelOffset = Matrix.CreateTranslation(-0.5f, -0.5f, 0)
Matrix translation = projection * halfpixelOffset;
Then you simply pass that into spritebatch.Draw(), and it will draw everything normally. To make the camera shake I think you could just do this:
translation *= Matrix.CreateTranslation(shakeAmountX, shakeAmountY, 0);
If this is too confusing and strange and doesn't fit into your system, then just make
Vector2 shakeAmount = (0,0);
alter the shakeAmount when you want the screen to shake
and draw everything at (positions + shakeAmount).