I'll give it a try myself - here's my take at watch dirs with separate downloading, seeding and complete dirs for every category + labels. I haven't tested any of this so it might not work immediately
btw, I posted a complete rTorrent 0.9.4 RPC reference (undocumented though) here:
http://pastebin.com/rN26HFsV
and no, doesn't matter where in the conifg file you place anything
Code:
# whitespaces can be used by proceeding them with double backslashes
# watch folder with auto start
# set download dir for music, set seeding dir, set completed dir, set label with custom1
schedule = watch_dir_music,10,10,"load_start=/Torrents/Watch/Music/*.torrent,d.set_directory=/Torrents/Downloading/Music,d.set_custom=seeding,/Torrents/Seeding/Music,d.set_custom=completed,/Media/Music,d.set_custom1=Music"
# downloading -> seeding
method.set_key = event.download.finished,move_seeding,"d.set_directory=$d.get_custom=seeding=;execute=mv,-u,$d.get_base_path=,$d.get_custom=seeding"
# seeding -> complete
method.set_key = event.download.closed,move_complete,"d.set_directory=$d.get_custom=completed=;execute=mv,-u,$d.get_base_path=,$d.get_custom=completed"
the checking for duplicates can be done by, whenever a torrent is added to rTorrent, matching and hash checking the seeding and complete dirs specified for the torrent (of course, this only works if the name of parent dir hasn't been changed). note that this can cause a lot of CPU load!
edit: if you want to rename parent dirs I think the best solution would be to use symlinks to link to the correct dir. an alternative and less straight-forward approach could be to write a script which searches for dirs with the correct size (piece length * pieces / 20, +/- piece length) and then hashes the content to see if it's the same (this way it can still find renamed torrents)