Hi, @will_gittoes! And welcome!
1. Regarding duplicates. The Singer Spec promises that all records will land at least once, but not necessarily exactly once. For streams with a primary key, most database targets will dedupe by using a merge upsert operation. (I can provide more information on this and additional mitigations, but the biggest win would be from using a DB target instead of the JSONL file based one.)
2. Regarding clearing the old results after completing a full table sync, the feature that delivers that capability is called "activate version" - meaning activation of the new table "version" by removing records from prior syncs. Almost all common database targets have this feature but the JSONL target does not (to my knowledge at least).
I hope this info is helpful. Do you have a specific destination database in mind?