1) Indeed, you can only use 1 row per trial, and only one table per task
2) Creating all 64 (8*8) possibilities is the easiest way to deal with this, indeed. There is actually a tool in PsyToolkit that helps you with quickly creating such tables: Click "table" in the left "create" menu, and read the guidance, that might help)
Note that all bitmaps in the bitmap section are actually simply numbered 1, 2, 3, etc (from the computer's point of view -- it knows the "names" of bitmaps, but internally, it simply replaces these with numbers starting from 1). So the two examples below do the same. Look at the example below, in which there are 3 bitmaps, a smiley, a tree, and a house. First, you get the easy conventional way of coding:
bitmaps
my_smiley
tree
house
task
show bitmap tree
Now you can do the same as follows:
bitmaps
my_smiley
tree
house
task
show bitmap 2
The reason is that the "tree" word is actually just replaced by the computer with a number. You can use this to randomly choose one of the 3 bitmaps as follows. In the example below, you set a new variable called "$my_random" to a random value between 1 and 3. Then after that, one of the three bitmaps is show without using a table.
bitmaps
my_smiley
tree
house
task
set $my_random 1 3
show bitmap $my_random
Now, you can make this even more sophisticated by choosing stimuli from different lists. Say, for example, that in your specific study, you want picture 1 from the first list of 3 pictures in your "bitmaps" and picture 2 from the second list of 3 pictures, you can do that as well. For easy of coding, let's say the first three pictures are pictures of types of vehicles (that is, pictures 1-3) and the second are pictures of types of buildings (4-6):
bitmaps
bus
truck
tractor
house
flat
tower
task
keys x m
set $my_random_vehicle 1 3
set $my_random_building 4 6
show bitmap $my_random_vehicle -200 0
show bitmap $my_random_building 200 0
readkey 1 5000
save $my_random_vehicle $my_random_building RT STATUS
You can even make this more sophisticated by not allowing the same number as in a previous trial and so on.
Thus, with this way of coding you get a lot more flexibility.
Generally, the only downside of this type of coding is that when you change the list of your bitmaps, you need to make sure the numbers still match the order as used in the bitmaps section.
In principle, you could also write the random line above as follows: set $my_random_vehicle bus tractor
because, for example, "bus" to the code is just meaning "1", given that it is the first bitmap listed in the bitmaps section, but I think that may be a bit more difficult to understand when reading back the code later.