I do a restore with move, as suggested above, and rather than setting to single user mode, I set to restricted_user mode;
use master
go
alter database destinationdbname
set restricted_user with rollback immediate
(then do the restore with replace, move)