I thing you have understood that the control isn't going to be perfect for many reasons, so the control sheme depends on what you define as 'acceptable' response. For example you want smoothness in your motion or you prefer a more 'strict' control? This can be controlled by the PID gains but there are other things also.
I suggest you to start from the simple. Run the PID every time you read a new speed. Run the system for the low rpm (real load conditions). Optimise this. You will draw some conclusions. Then go for the higher rpm with this low freq in your PID and feed to the PID the average of the speed (see Cumulative moving average). If the response is too slow (50ms is prety fast, so probably not, but depends on the size of your motor), only then try to increase the PID freq along with the speed reading, but this probably means that you need to adjust some gains as a function of the PID period (at least Integral gain response, varies with the PID speed). Of course there is no reason to run PID faster than the speed reading, but in contrary, IMO this is wrong because you feed PID with previous data. But of course you can try it, the effect might be negilible.
Also, a simple trick I have done in the past to monitor the rotation speed of a motor is to connect an extra IR transceiver to the encoder, and feed this (amplified to correct levels of course) to a sound card line-in (beware of the dc, if your card lack's an input capacitor). Then with a free audio recording programm (like goldwave or any other) you can record, see, and hear (because 300-1500 Hz is clearly audible) the speed of your motor. I have found it really convenient.
And for the end, if you have abrupt load changes, want to keep constant speed and dont care about start/stop times, try to add some extra inertia (weight, heavy disk, wheel) to the rotor. Think of this as a natural 'low pass' filter for the rotor speed.