Direi che una sleep possa essere una soluzione,
tieni conto che in base alla configurazione del PHP il timeout non è detto che possa essere infinito.
Una possibile soluzione a mio avviso è quella di utilizzare un cron che lancia ad intervalli regolari lo script che invia le mail magari a gruppi di 100,
utilizzato congiuntamente alla tecnica di 'segnare' le mail già inviate su DB.
In sostanza ogni volta che lo script viene richiamato manda 100 mail,
quando le avrà mandate tutte semplicemente non ne manderà più.
Quando dovrai inviare una seconda newsletter basterà svuotare quel campo e per magia le mail verranno spedite nuovamente.