Tutto e` possibile (... quasi). Resta da vedere quanto costa (in termini di programmazione).

Comunque nel tuo caso e` possibile.

Allora ci vuole anche un altro vettore che dice alle celle della tabella cosa devono contenere (se niente o uno dei link/immagini).
codice:
var tabe = new Array(N); // N e` il numero di campi della tabella
for(var i=0; i<tabe.length; i++) { // inizializzazione a vuota
tabe[i] = "&amp;nbsp;";
}

var matr = new Array(N); // stessa lunghezza
matr[0] = ('link1', 'imm1');
matr[1] = ('link2', 'imm2');
matr[2] = ('link3', 'imm3');
...fino al numero di link -1 (supponiamo 5)
matr[5] = ("","");
matr[6] = ("","");
... fino a N-1

// ora occorre riempire il vettore tabe 
// con i dati contenuti nella matrice matr, presi in ordine random.

  for(var i=0; i<tabe.length; i++) {
    tabe[i] = "";
    var ind = Math.floor(Math.random()*matr.length); // n random
    if(matr[ind][0] == "") {  // cella vuota
      tabe[i] = "&amp;nbsp;";
    } else {                  // riempimento cella
      tabe[i] = "<a href='" + matr[ind][0] + "'>";
      tabe[i] += "[img]" + matr[ind][1] + "[/img]</a>";
    }
    
    matr.splice(ind,1);     // toglie elemento da matr
  }  

// a questopunto tabe e` piena, mentre matr e` vuota (length==0)
Poi al posto della codice HTML da inserire nella tabella (quindi nel body):

<td ...>
<script type="text/javascript">document.write(tabe[XX]);</script>
</td>

Al posto di XX devi mettere il numero progressivo (a partire da 0).

Non ho testato nulla, per cui ci possono essere errori