Sfrutti sempre lo stesso codice, solo che questa volta usi un DB, quindi potrebbe essere strutturato in questo modo:

id, nome_banner, link_banner, visto

id in auto incremento, nome del banner per sapere quale, il link e ovvio, visto lo si imposta a 0 di defoult.

Se viene visualizzato aggiorna il dato visto a 1 q uindi lo escludi dal random con un if.
Quando arrivi a 4 banner visti azzeri e fai riaprtire da capo.

Sarebbe utile implementare uno swithc sarebbe più semplice.

Per evitare di fare un codice chilometrico.

Si potrebbe fare una funzione e richiamarla dove serve.

Appena ho un momento libero faccio giu qualcosa e te lo posto come esempio.