bah, got sick of messing with scp.
I followed your advice but instead of using rsync, used sftp. Was done in 10 minutes.
Sftp allows you to do a sftp -b batch_commands_file email@example.com
and works with key auth since it's ssh. All the plumbing is already there.
I can do all my PUT's and do chmod's within the batch script. Works like a champion. scp is bugged...
Turns out it wasn't permissions on the remote server at all. SCP just doesn't do what the documentation says it does, at least not the ded rat version. sftp is more flexible anyway since you have the whole sftp command set available to you.