That's not necessarily true. Those forces will still be there but the learning of what not to do has also been had. People can improve and learn over time.
Yes but if you have improved over time, then at least the most recently developed parts of the code would be high-quality and would not need rewriting. So you would only need to rewrite some encapsulated legacy parts of the codebase, which is completely different from a full rewrite.