[sgen] Split up concurrent sweep from worker logic