Is the number of teeth actually that critical? I would suggest that it is not. A few years ago, a friend's speedo was not working. We found that the gearbox driven sender was actually OK, but was not being driven by the gearbox. The quill was OK, as was the plastic driven gear, but the driven gear was not engaged with the worm gear on the gearbox output shaft. Rather than removing the engine and 'box to rectify the root cause, I fabricated a bracket to mount a proximity detector to count diff input drive flange bolts (actually, every other bolt, as the four bolts are not equidistant), and wired to the original wiring. Then, with a little trial and error, the speedo was recalibrated to read accurately. The speedo action was normal despite only around 8 counts per wheel rev. I feel like there are frequent posts about problems with speedo readings, either due to flex of the bracket, failed or out of adjustment sensors, or damaged wiring. I would suggest that a redesign could massively reduce these issues. The sensors seem way too sensitive to adjustment to me. I would go with a larger diameter sensor, with a greater sensing range, mounted on a bracket from the diff, and use a toothed ring on the inboard end of the drive shaft with a much reduced tooth count. Whilst not to drive a speedo, We're using a similar setup on my sons hillclimb car (for traction and launch control). Our sensors count 16 teeth, and still work effectively over a range of adjustment of over 1mm. I would not worry about having to shrink fit rings to drive shafts. I would secure the rings to the drive shaft with three roughly equally spaced grub screws. For reference, I knocked up a rough CAD drawing and got some quotes from https://www.fractory.com/ Eight rings laser cut from 10mm steel plate, woud cost about £90 (where any order less than eight still cost around £90). Twenty rings would cost about £120, and 40 around £175.