Check your local landscaping stores that have outdoor piles of landscaping rocks. Often they have large bins of landscaping rocks of different sizes. Some will allow you to bring in a bucket and choose the rocks you want for a price per pound.
For the Iowa City/Coralville area: King’s Materials in Coralville sells Mexican Beach Pebbles which are a really nice option. They are a fantastic size for rock painting and are very smooth, making them easier to paint on. They are more expensive than the option above, but also better to paint on, so you get what you pay for. King’s charges by the pound, so you can take in a bucket, pick out the perfect rocks, and they will weigh it and price it for you. Very easy process, and you get to pick out the exact rocks you like! I almost filled a 2 gallon bucket it and it was just over $10.