Thanks for the responses so far. An update on this issue: I gave the analog settings in Retroarch a try but they had no impact on the sensitivity.
I decided to go back and dig deeper into mouse polling. I came across more information about mouse polling in Linux: https://wiki.archlinux.org/title/Mouse_polling_rate#Polling_rate_and_polling_interval
I added usbhid.mousepoll back to the boot config file, set the GRS spinner to pulse at 512, and did some testing. Without that command or when I set it to value 0 (system use polling rate requested by device), my spinner runs slow. When I force the system to poll at either 1, 2, 4, or 8, the spinner runs at a much faster speed. The spinner moved at the same speed with all four values, so I left it on 8 to save CPU cycles on the Pi.
I set MAME sensitivity according to the formula (14%) and the blaster now free spins at the familiar speed. I can also properly adjust Major Havoc. Interestingly when I do a 5-space full turn test, a full turn with the GRS is exactly 10 spaces. The blaster isn't moving twice as fast; the blaster clicks at the same speed as this guy's setup with a turbotwist:
I wonder if the GRS is reporting a half turn as a full turn.
In any case, I'm willing to call this issue resolved to my satisfaction.