I ran sudo launchctl unload -w /System/Library/LaunchDaemons/org.isc.named.plist and came up with an error that signified that it was already unloaded (launchctl: Error unloading: org.isc.named).
I then loaded (launchctl load -w /System/Library/LaunchDaemons/org.isc.named.plist) and unloaded (launchctl unload -w /System/Library/LaunchDaemons/org.isc.named.plist) again, this time without error, at least in Terminal.
I then ran pmset -g assertions and found pid 49495(named): [0x0000000800000eaf] 00:43:46 DenySystemSleep named: "org.isc.named.denysystemsleep" in the list, even though there is no sign of the PID file in /private/var/run/named!
Loading (launchctl load -w /System/Library/LaunchDaemons/org.isc.named.plist) again and running pmset -g assertions shows not just pid 49495(named): [0x0000000800000eaf] 00:43:46 DenySystemSleep named: "org.isc.named.denysystemsleep" in the list, but also pid 49986(named): [0x0000000800000eaf] 00:43:46 DenySystemSleep named: "org.isc.named.denysystemsleep"; at this point, the PID file (49986) reappears in the correct location, together with a session.key file. It would therefore appear that the launchctl actions are not acting on the original item. As soon as I attempt to 'kill' PID 49495, a different process is started and the BIND server restarts.
That may all sound very confusing and, believe me, it IS! I really am at a loss to understand what is going on and think the only way out is to carry out a clean install of ML and see what happens!