I have looked around at python reloading and found it gets complicated fast. The following quote from a help site is characteristic:
"Hot reloading is not something you can do in Python
reliably without blowing up your head. You literally cannot support
reloading without writing code special ways, and trying to write and
maintain code that supports reloading with any sanity requires extreme
discipline and is too confusing to be worth the effort. Testing such
code is no easy task either.
“The solution is to completely restart the Python process when code
has changed. It is possible to do this seamlessly, but how depends on
your specific problem domain.”
So I think I will need to suck it up and restart Rhino or change my workflow so the bulk of the functional debugging is done externally.