Yes, this could be done by using a staging form.
You need to have a 3-phased approach.
- Phase 1 submits ONLY the EntryID of the source record to the staging form and returns a confirmation message to the user.
- Phase 2 is done by an escalation running on the staging form that triggers workflow to collect the rest of the fields data to be duplicated and then does a push field to create the new duplicate record on the source form.
- Phase 3 is done by archiving that deletes the record from the staging form overnight.