OK, bem, aqui está a solução que eu criei. Um pouco de dor, mas ...
Primeiro, quando estou pronto para esperar o próximo segundo, recebo o MilliSecond atual. Esta é a melhor resolução que posso obter do sistema.
Então, eu subtraio isso de 1000 (1000 Ms por segundo) menos a Ms atual é igual ao número de Ms que eu preciso esperar.
Em seguida, multiplique por 1 milhão (para converter em NanoSeconds)
Em seguida, use NanoSleep (blah, blah).
Isso parece funcionar.
PS, comparei o uso da CPU (com o topo) entre esse método e um que simplesmente pesquisa esperando pelo próximo segundo para chegar, e a versão de pesquisa usa 98% da CPU, e isso usa 0.3%. Este é o caminho.