Independently of the keep alive mechanism beeing enabled or disabled on either side: A connection will never go from TIME_WAIT to ESTABLISHED. TIME_WAIT is the state of a socket pair from a recently closed connection which is temporarily out of use.
A connection enters the TIME_WAIT state after the local end has successfully initiated connection tear down ("active CLOSE") and received the signal from the remote end that it too wants to close the connection. The OS then holds on to the socket pair, waiting for two MSLs before it releases it for another, fresh, connection. This ensures no segment from the old connection will interfere with any newly created connection which just happens to reuse the socket pair of the old connection.
Does this really work? Why does it suffice that only the socket pair of the actively closing end enters TIME_WAIT? Because socket pair reuse on one end implies socket pair reuse on the other end. What if the actively closing end happens to crash and rebeoot within two MSLs? Then it will enter the quiet time, during which it is not creating any connection at all.