I’ll agree with what others have already said; snapshots of the backup target are (IMO) the best solution to ensuring all the files are in a “consistent” state during the backup.
Something that stood out to me in particular though:
can change and even be completely deleted (unmounted) by users
If the target directory being unmounted is a particular issue, you might want to consider making the restic job dependant on the target directory in question being a mount point.
If you’re triggering the restic backup via a systemd service, that’s fairly straightforward, see the “ConditionPathIsMountPoint=” systemd unit condition (documentation link).