Based on your suggestion I tried
surface.fill(color, special_flags=BLEND_RGB_MULT)
And actually, it's working great. From four lines to one, nice.
Thanks for the tip!
It's not Pygame strictly, but if you're using Pyopengl w/ Pygame, you can
pass such a tint as a "color" param when drawing a textured Quad in
Pyopengl, without needing to monkey with surfaces at all.
-Jasper