I'd proposed a -exclude <filename> where the file is a list of file specifications to exclude from transfer. This would work well with -recurse. One directory tree could be specified to be FTPed, but the exclude list could be lines like:
.TMP excludes all files with the string .TMP in them
/cache/ excludes all files with a directory of cache in the file spec.
Usage of wild cards would need to be defined.