I have a very ugly but actually working fix. It requires me to add RewriteCond lines for each sub-blog, which is not currently too onerous, as there are only three of them, but which would require some actual technical solution if I were to expand. But for the record:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !^/cpfinal/
RewriteCond %{REQUEST_URI} !^/cpdraft/
RewriteCond %{REQUEST_URI} !^/infinitesummer/
RewriteCond %{REQUEST_URI} !^/wp-content/
RewriteCond %{REQUEST_URI} !^/blog/
RewriteRule ^(.*)$ blog/$1 [L,R=301]