Thank you for the input. I actually spent a while doing random google searches and testing things. Unless I made some grave error, there are measurable differences from using Add Force, applied continuously per-frame, at different frame rates. I invite you to do your own testing.
It seems what we’re getting in Add Force is more of an approximation of framerate independence. However, I found enabling substepping improved things significantly, and using the async physics with its substepping enabled seemed to do even better. Achieving a fixed timestep seems to be a necessity for consistent physics.