Se devi inviare "SOLO" 6-7000 email non vedo perchè dovresti inviarne 100 al secondo. Hai necessità di inviare tutto in 1 singolo minuto?

Prenditela con calma, fa l'invio molto più lentamente, lascia che l'invio impieghi mezz'ora e vedrai che avrai molti meno problemi da gestire.

Per volumi del genere non ha senso che perdi tempo a verificare le limitazioni del tuo provider in uscita, e soprattuttto le limitazione dei provider ai quali scrivi in ingresso. Se hai una lista di 6-7000 iscritti, per esempio, è facile che ne hai 2000 di libero (o cose simili, se è una utenza "consumer". Se a libero mandi 2000 email nel giro di pochi secondi puoi sicuramente incorrere in più problemi che se lo fai in vari minuti.

Per quanto riguarda mail() vs SMTP il comando mail è più veloce però ha delle limitazioni. Quando usi il comando mail di php alcuni parametri come il return-path della mail in molti casi non puoi modificarli. Il comaindo mail in pratica usa il sendmail (o altro MTA) installato nella macchina per fare l'invio, mentre le librerie che fanno invio SMTP aprono un socket verso il sito remoto.
Il comando mail() si preoccupa di gestire i tentativi successivi nel caso di errore di consegna alla prima (molto frequente in caso di server che usano greylisting), mente se fai la connessione SMTP devi preoccuparti di gestire una coda di uscita e i retry (alcune librerie, come ti hanno segnalato, lo gestiscono).