WordPress redirect from one directory to another but exclude wp-admin and wp-login.php

You could try this:

RewriteCond %{REQUEST_URI} !^/wp-admin
RewriteCond %{REQUEST_URI} !^/wp-login\.php(.*)$
RewriteRule ^blog/(.*)$ /news/$1 [R=301,NC,L]