あなたの答えは、外部 API からの拒否がどれほど高くつくかに大きく依存します。
複数の独立したクライアントからのすべてのエラーを回避することは不可能な場合があります。スレッドは、各ナンスを作成するときにスレッド間で調整する必要があるため、昇順で作成されます。また、各ノンスを使用する場合は、順不同で遠端に到達しないようにします。そして最後に、各スレッドは、使用していたノンスがリモート API によって認識されたときに、他のスレッドに通知する必要があります。これは、「私は今ナンス 1000 を送信しています」と言うと、そのスレッドが 1000 で完了するまで、 1000とそれ以上のすべての値が要求されるためです。この時点で、他のスレッドが 1001 を試行しても安全です。
不適切な API 呼び出しのコストが非常に大きい場合、一度に 1 つのスレッドしかその API を使用できない状況になる可能性があります。各スレッドは、排他ロックを要求し、ナンスと API 呼び出しを処理し、ロックを解除します。これは、スレッドを使用する目的に反する可能性があります。
より良い解決策は、新しい nonce を作成して API 呼び出しを再試行することにより、各スレッドでこれらの拒否を処理することだと思います。ナンス値を完全に作成したとしても、ネットワーク速度とルーティングの変動により、これらのリクエストが API サーバーに順不同で到達する可能性があるため、おそらくそのような関数が必要になるでしょう。
要するに、これらのエラーをなくすことはできないと思うので、コストを削減することに集中してください。