Reduce the send rate of packages. I would suggest you to set a fixed rate (say, 3 times a second - actually this is a great rate of sync if you do client-side predictions correctly), rather than a rate that depends on input change rate.
But of course, this will reduce the precision of sync. So you will need to send velocity info with position too, and make extrapolation or interpolation (for a 2d top-down shooter, i would prefer interpolation) to move local representersrepresentatives smoothly.
And implement an algorithm to sync data only when player moves or rotates.
I believe these two optimizations will dramatically reduce the amount of data being sent.