Set up one array for 1-8, and call "Main"&BHTSmartRandom.Next. The only trick is you need to keep a counter so that you know all 8 layouts have been visited. You could use an instance variable on BHTSmartRandom itself. You could also use a second array that you copy the values over to, and pop them off one at a time, but the counter seems simpler here.
The wrong increment issue is something else. We'd need to see what you are doing there. It should be straight forward.