If unreal decides to abandon all older versions support and development, to just focus on something new that requires payment, I don't think you can keep fixing or updating the old unsupported code, even if you have the source
You just can't redistribute the source to anyone else but using it internally for your own projects to build executable that you share (and sell as long as you pay the royalties to Epic) is fine.
The last UE3 game released in 2021. UE4 came out in 2014 and UE5 in 2020.
Unreal Engine license are per engine version and perpetual. This is something Sweeney has been pointing out for years. And again a few days ago when Unity started this shit storm. And as Sweeney points out the big studios/publishers usually negotiate even better terms.
Yes you can. But unless you're a AAA developer studio, it's ridiculously infeasible. At least for Godot, there would be a community effort to maintain it. Such a community would be impossible with any closed-source (even if readable) engine.
In general one very rarely upgrade engines after release. Even during development you usually don't upgrade if there isn't a new feature in the new version you really need.
Really it is only an issue for new projects and at that point if the license of the newest version is not to your liking pick a different engine.
Also the last UE3 game I know of (Them and Us in 2021) was made by a small indie studio not some big AAA studio with massive publishers backing. At that point the engine had been in "end of life" state for 5+ years.