Fix instance vs tuple subtyping edge case (#18664)
Previously a code path was introduced that made fallback a subtype of
its tuple type for non-generic tuples, while the intention was to cover
`tuple[Any, ...]` and similar. I add a unit test + some refactoring to
make this mistake much harder in future.
This may need to wait for https://github.com/python/mypy/pull/18663 to
avoid "regressions" (the other fix needed to avoid "regressions" is
already merged).