IIUC, your snap can be made strict because it only backs up things that are allowed by strict confinement. Correct?
If so, you bundle restic, rsync, etc in your snap as stage-packages (or build from source), but don’t expose them as snap commands that show up in /snap/bin. In this manner, you can ship whatever restic or rsync you want and rescript calls these rather than system binaries and there is no conflict.
As for using system-files with /usr/* that won’t work the way you want because your snap doesn’t use the host’s /usr but instead a snap-runtime. Instead, ship restic and rsync as suggested and call into $SNAP/path/to/restic (or use Snap layouts)