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.