Random particle rotation
You could try a couple things to improve your results. One is to use Brownian Force under the physics properties of the particle settings.
From the manual:

Brownian
Specify the amount of Brownian motion. Brownian motion adds random motion to the particles based on a Brownian noise field. This is nice
to simulate small, random wind forces.

Also, you may use the rotation values, which does provide a random parameter underneath the advanced tab.
Here are the settings that I used:


Furthermore, using multiple objects will help in your instance collection. The repetition will not be nearly as noticeable if you use 5 or more objects as if you only use one.
Here is the result:

As for the grid pattern, you can vary the density of your density group when you are in weight paint mode if needed. This is an image of my example: