By "non-functional" do you mean they don't work at all, or that existing code simply doesn't work very well with them in a sped-up system?
Try testing the sticks using this:
http://www.oldskool.org/pc/joycalib/joycalib.zip
(If you have a single stick plugged in and it says it doesn't find a stick, either plug it into the other port, or start it with JOYCALIB.EXE /b )
I wrote it and it defaults to reading the 8253 timer for its timing information, so it should return consistent numbers on any system regardless of speed. While it can't fix badly-written software (or BIOSes that never expected the PCjr to run past a certain speed), it can at least verify that your sticks and ports are working fine. In other words, if your sticks work okay with JOYCALIB, then all of your other issues are just unfortunate software choices by software programmers.
Speeding up a PCjr will cause the BIOS stick routines to return different values because it uses fixed timing loops for the sticks. This in turn will cause the INT 15h joystick read routines to not work properly, which will then cause joysticks to not work with any program that uses the INT 15h routines. And, unfortunately, it is reasonable to expect that any program detecting a PCjr would default to using the official BIOS joystick routines, because programmers had it beaten into them to use the BIOS routines as much as possible on PCjrs for compatibility reasons.
Because the BIOS relies on the speed of code execution loops to determine axis values, I don't think it's possible to fix on a sped-up PCjr.