Thanks for the reply.
I’ve found the problem.
Somehow, the value of the blog_public option was set to 2 (instead of 0 for private, 1 for public).
In the is_blog_public() method in core.class.php, you are checking for a value of 1 otherwise you assume the blog is private. I’m wondering if it would be better to test against 0 instead, and return true unless the option value is 0?
Anwyay, toggling the Discourage search engines from indexing this site setting does set the option value back to 0 and 1, which fixes the issue – thanks for the clue!