tar -cf - /source | ssh destination "cd /destination ; tar -xf -"
However there are as many different ways of doing what you ask as there are opinions, so you may get far more "methods" than you ever knew existed.
If some number of them are already at the destination, then rsync will only send the ones that don't exist, and the ones that differ. What kind of performance will result for "thousands of small files" is a different matter (and note that in today's world, "thousands" is a relatively small number).
If you care about permissions, you can always run an rsync after rclone has finished the transfer because applying just the permissions is much faster than the actual single-threaded transfers of rsync.