I think you can do that with 2 or, if you want to make it multiplayer friendly, with 3 commands.
First you have to create an item that can be collected immediately, so /summon item ~ ~ ~ ~ {PickupDelay:0,Item:{id: "minecraft:stone",Count:1b},Tag:['drop']}.
Then transfer the data of the item currently in your hand to the dropped item, i.e. approximately /data modify entity @e[type=item,distance=..1,limit=1,tag=drop] Item set from @s SelectedItem.
So that only the executing player can pick it up, set the Owner UUID to the one of yourself, you can do this with the command /data modify entoty @e[type=item,distance=..1,limit=1,tag=drop] Owner set from @s UUID. These three commands must be written into a function.
If everything works, when you as a player execute the function, the selected item will be duplicated.
Ewentuell you have to test the commands again, because I don't know if I wrote them right.