I found this worked pretty effectively:
First, add all the directories, but not any named “CVS”:
find . -type d \! -name CVS -exec cvs add '{}' \;
Then add all the files, excluding anything in a CVS directory:
find . \( -type d -name CVS -prune \) -o \( -type f -exec cvs add '{}' \; \)
Now, if anyone has a cure for the embarrassment of using CVS in this day and age…