One other way I've heard of (I'm currently testing it) is to have a campaign that grabs the Latest Referrer and store it each time there is a new visit.
This can be done by using the trigger.referrer token and assign it to the Last Referrer field upon any page visit, except if referrer is another page of your site (you only want to grab external referrers).
This could looke like this:
Smartlist
Flow:
Note that Last Referrer gets overritten each time a new visitor comes in though...