@OndrejBriza
You can do this easily by getting the last submitted record in the OnSuccess action of your form.
Skip the concept of "NewForm" and stay away from it as you don't need it in this case.
Instead, in your OnSuccess action of the form, set a variable as such :
Set(glbNewCopy, Patch(Self.LastSubmit, {ID: Blank()})
This will create a variable with the exact copy of the submitted record and will blank out the Primary Key (ID)...which means to PowerApps, it will be a new record when used.
Then set your Item property of your form to : glbNewCopy
If you want to reuse the same form (recommended), the set the Item property to:
Coalesce(glbNewCopy, Defaults(yourDatasource))
This will give you a blank record if none has been submitted so far.
If you are loading the record from a gallery instead, then change the above to:
Coalesce(glbNewCopy, yourGallery.Selected)
Keep your form in Edit mode always. There is no need for NewForm and it should not be called either. It's ALL about the primary key column - in this case the ID. If ID is blank, then the form KNOWS that it is new. If ID has a value, then the form KNOWS it is Edit. It's just that easy.
I hope this is helpful for you.