The critical question is whether you defined an instanceId in your form.
If you did not define an instanceId, ODK Aggregate cannot de-duplicate your data. I just noticed that the Opendatakit.org form design pages don't mention this important aspect of form design. I'll update them next week.
I'm still wondering...if ODK Collect (or KoboCollect in our case) has successfully submitted a form AND its status has changed from FINISHED to SUBMITTED, then why would it even re-submit said instance -- regardless of whether an instanceid field is defined or not? Just curious.
So, is this duplicate thing due to a bad network? Eventually, the forms are successfully submitted! Or, is it an issue with the data collector, perhaps, not using KoboCollect correctly. We did provide training a few days ago.
Finally, has anyone used this solution to avoid duplicate entries in the future as suggested by Mitch?
For ODK Aggregate, you don't need to specify the namespace, just have a <meta><instanceID/></meta> group in your form.
With ODK Collect 1.1.7 and later, the bind for this element that replicates the instanceID that would otherwise be generated by Aggregate would be: <bind nodeset="/data/meta/instanceID" type="string" readonly="true()" calculate="concat('uuid:', uuid())"/>
You can construct your own instanceID expressions. However, you should avoid symbols and punctuation other than colons and dashes since the parsing logic within Aggregate is likely fragile if you go wild with punctuation (and that is used later on when retrieving images, repeat groups, etc.).
<instanceID/>solution worked for solving this problem. The Meta Data scheme referred to by Mitch is a good idea.