I decided to try something else before I tried going through that painful process.
I took your previous diagnostic to the next level by simply running "emacs" and then trying the ssh path. That worked. I then brought down my main Emacs window that I start from a shortcut, started it up, and then without doing anything else, I tried the ssh path. It worked.
I then brought it down again and brought it back up, and then did what I always do as my first step after starting Emacs, which is creating a shell buffer, and then trying the ssh path. That timed out.
I then bounced it again, tried the ssh path, which worked, then created a shell buffer, which worked, and then I deleted the buffer that I got from ssh and tried the ssh path again, and it worked. I then did the same steps, and adding an ssh path to a different file in that same remote directory, and that also worked.
I've tried these scenarios multiple times, and they are repeatable.
So, it seems like there's something about my process of creating shell buffers, which if done before the first tramp connection, makes tramp time out. I don't know what information tramp caches. It's possible that in the last scenario, if I then tried a tramp connection to a different host, that would fail, but I'm just guessing.
I create shell buffers using a couple of very small packages that I wrote decades ago, which I haven't had any issues with since. They manage a "ring" of shell buffers which I can either step through, or search for a particular one by its current directory. I'll attach them, if there's a clue there. Reading the file comment for "cycle-shell.el", I think I must have simplified it slightly after I wrote that comment, because I don't depend on a "shell-for-cycle" package anymore.