That is exactly what we use to do, scrap original lead source if it came from a new source after 90 days. However, we recently decided to add multiple lead source fields and lead date fields (Lead Source 1, Lead Date 1, Lead Source 2, Lead Date 2) to account for multiple lead sources. When a new lead comes in the Lead Source, Lead Date, Lead Source 1 and Lead Date 1 fields are all populated. If this lead comes in again, regardless of its original lead date, the new information is displayed in the Lead Source and Lead Date field and the info that was previously there is pushed down to Lead Source 1/Lead Date 1 fields. If the same lead came in again the new info would be displayed in the Lead Source/Lead Date fields as well as Lead Source 2/Lead Date 2 fields. This way the most recent lead source info is shown at the top in the Lead Source/Lead Date fields and all sequential lead info follows below.
So, this depends a bit on your attribution model, but I'd strongly suggest against overwriting Lead Source. Basically, if you think of Lead Source as the first point of contact--the thing that made your record care--that needs to be documented properly. That they came back two years later doesn't overwrite their original contact.
It's easy to fall into this trap if you're using Lead Source/first touch as the main attribution point for an opportunity but examples like this show why it's not the best idea. Ideally, what you'd do is give the action that made them come back have a higher weight (such as setting it as Primary Campaign Source) or using a more complex model that allows you to weight the lead source lower due to age.