mv with rsync functionality

I’m trying to merge two directory trees that have many common elements but also each have elements that are only present in one of the two trees. The main issue I am having is that when mv encounters two sub-directories with the same relative paths it either keeps the source (with -f) or the destination (with -n) but I can’t make it take the union of both sub-directories. I could of course use rsync with --remove-source-files but this will actually copy the data and then delete the old files as opposed to a true move. The two directory trees contain several hundred GB of data and are both on same partition so I would love to do a true move if possible for the sake of time.

Why is my BASH_FUNC_foobar%% environment variable unset in shell subprocesses?

I’m messing around with the security of a setuid binary (with the intention of disclosing anything I find to the author, obviously). I’m pretty sure it has an arbitrary code execution vulnerability because it invokes a shell script and it doesn’t sanitize the environment – I thought of bash’s export -f but I can’t actually make a proof of concept work.