Your approach with expressions is exactly how to do it. An application / plugin that does this exact thing is on my "todo" list. If you're on a Mac, have a look at "Shape Collage" app. It does this task pretty well, and allows you to save the result to psd.
Alternatively - how about using your image as a Particular layer
emitter with your layers as the particles?