Okay I was able to fix the problem. 2 main changes to my code:
1) Having a custom tag seemed to confuse the ng-repeated renders so making seat-item an attribute instead fixed the problem.
<tr ng-repeat='row in rows'>
<td seat-item ng-repeat='seat in row.seats' thisseat='seat' thisrow={{row.row}}>
</tr>
2) The method/attribute .show() and .html were causing errors so instead of:
element.html(getTemplate(scope.thisseat)).show();
changed the code in the linker to:
element.append(getTemplate(scope.thisseat));
Not experienced enough with Angular to know what caused the initial errors but maybe someone in the comments can explain.