I ran into a similar issue when spawning waves of enemy units in a randomized manner. What I ended up doing was adding weights to each enemy type. You can do something similar in this scenario as well.
Each of the 8 tiles can have equal weighting at the beginning. But every time you use up a tile, you reduce its weighting, which then slowly increases (till it reaches the default value) over time/update cycles. If you absolutely do not want repetition, you can even set the weighting down to zero after a tile is used. This will make sure that the tile does not repeat itself in adjacent iterations.