The benefit of TDD is that the code you end up with will actually be testable. Just keeping in mind that you have to write a test for your code, changes how you write it.
As a bad example, imagine having a 1000 line function that just does everything you needed for the new feature... Good luck testing that afterwards.
> Just keeping in mind that you have to write a test for your code, changes how you write it.
Which is often enough to ensure the code is testable.
Generally, I'll write some tests sort of alongside, or soon after (like, a couple hours or a day) to not lose the initial thought process. Going back to code days/weeks later and trying to 'test' it when it wasn't conceived of as testable is tough.
We write extensive unit tests, but mostly after development work. The re-write work you mention is then avoided.