No, they didn't.
I ran an experiment and it turns out having up to a million mutex handles around didn't cause problems.  This program runs about instantaneously:
#include <pthread.h>
#include <stdio.h>
pthread_mutex_t a[1000000];
void main(int argc, char **argv)
{
    int i;
    for (i = 0; i < 1000000; i++) {
        pthread_mutex_init(a + i, NULL);
    }
    printf("Done creating\n");
    for (i = 0; i < 1000000; i++) {
        pthread_mutex_destroy(a + i);
    }
}
ns_mutex is just a thin wrapper around pthread_mutex calls.  So I figured having around the measly 10k mutexes I use on my site won't cause me any problems and just stopped destroying unused ones.  So perhaps a politically acceptable fix for the nsd guys might be to just not provide mutex destroy anymore.