Twój początkowy pomysł jest całkowicie wykonalny. Wystarczy uruchomić 10 wątków roboczych, które czekają na dane wejściowe w jednej i tej samej kolejce. Następnie twój proces pocztowy umieszcza adresy URL w tej kolejce. Równoważenie obciążenia nastąpi automatycznie.
Jeśli powiązania SQL są bezpieczne wątkowo, możesz wykonać czynności INSERT lub UPDATE w wątkach roboczych. W przeciwnym razie dodałbym jeszcze jeden wątek dla rzeczy SQL, czekając na dane wejściowe w innej kolejce. Wtedy twoje wątki robocze umieściłyby zapytanie w tej kolejce, a wątek SQL wykonałby je.
Jeśli wyszukasz w wyszukiwarce „kolejkę wątków roboczych Pythona”, znajdziesz kilka przykładów.