There are a couple of ways to get multiple objects instanced to particles. In order to do so with a truly random distribution, you will need to use an expression somewhere. However, a quick and easy substitute is to simply set the following three attributes:
For the instancer node, the 'Cycle' attribute (in the 'Instancer' section of the AE). Set this to 'Sequential'.
For the particle shape node, the 'CycleStartObject' and 'Age' attributes (in the 'Instancer [Geometry Replacement] -> Cycle Options' section of the AE). Set both of these to 'particleId'.
Once you do this, the first particle will have the first object instanced to it, the second particle will have the second object, and so on, looping back around to the first object after the last.
As for getting the particles to rotate randomly... be careful about the difference between 'aim' and 'rotation'. Do you want the particles to be oriented randomly ('aim') or do you want them each to tumble and spin in different directions ('rotation')?
In either case, yes, for true randomness you will need to use an expression. In general, the 'aim' and 'rotation' settings read an attribute attached to each particle, such as mass or velocity or force, then rotate the instanced object based on the value of that attribute. If you want random rotation without affecting any of those built-in attributes (which may be contributing to the particles' behaviour, and you therefore don't want to mess with), you should add a custom per-particle attribute to your particles. Once you have done so, that custom attribute will show up as a choice in the 'aim' and 'rotation' drop-down menus. You can then use a particle expression to randomize that attribute, and the instanced geometry will follow appropriately.