Cracked it!
The key was the location line to match directories - having matched
/blog/??? and rewritten to /blog/index.php?q=??? I then could leave
it to the raw php location to handle, however....
The location to catch directories was being triggered. I needed to have
the location match all directories except /blog/
Digging out my regex manuals, I discovered this incantation was required.
location ~ ^/(?!blog)(.*)/$ {
Works like a charm :)
Ian