Ahhh....ballasting. Definitely a reoccurring subject, and everybody has their methodologies...including me.
As opposed to many, I enjoy ballasting. It puts me into a semblance of a Zen state, and I really enjoy the vast difference it makes to track realism when done properly.
Since the prototype railroad I model (Transition Era Union Pacific - Big Boy Country) maintained their mainlines religiously, it was pretty easy to see on the real railroad that the ballast had an obvious profile to it, as well as a distinctive color and rock size.
So, after painting and weathering my Rail-Craft Code70 flex, along with my hand-laid turnouts (This was on my first Ntrak modules, hence the Code70 rail), I selected real crushed rock N-scale ballast, then sifted it to get the right size rocks that complied with my prototype samples. I also mixed up four colors of ballast to match the multiple colored stone proportions I found in my photos of the UP mainline in Weber and Echo Canyons.
I also took some measurements and made drawing on-site of the ballast profile, as well as took lots of photos for reference.
I went through my collection of watercolor brushes and found some that were just the right softness and width to move ballast between the rails and to brush off the tops of the ties.
I tried hand-brushing the outside-the-rails ballast into an acceptable profile, which I got after much tedious and repetitive hand-brushing...and discovered that my wife's extra set of makeup brushes worked GREAT for this! However, I wasn't happy with the ballast on my N-scale mainlines because it wasn't "perfect" enough...it didn't match my prototype's distinct ballast edge which was an even, consistent distance from the rail on both sides of the track.
Being aware of Jordan Spreaders way back in my younger years in the mid-1980's, I decided to build my own spreaders out of sheet Styrene, with slots cut for the rails, which would register the spreaders. I built them for both Code70 and Code55 Rail-Craft flex and I designed them so that they would only work for one side of the track, being reversed to do the opposite side.
However, they didn't get all the rocks off of the ties, since they had to fit above the ties so they wouldn't catch on the ties or spikeheads...which would cause them to flick ballast all over and make a pattern of ridges in the loose ballast.
Here's what my Code55 spreader I built looks like:
Photo (1) - Homemade Plastic Ballast Spreader: 
This worked pretty well, but I still have to use my brushes around turnouts and other trackwork.
I lay in the ballast between the rail first and pretty well get it to the level I want and with the rocks off the tops of the ties.
I then take a pretty big spoon and roughly apply ballast to the outside of the track, then take my spreader and form the loose ballast adding more if needed.
After both sides are where I like 'em, I brush away the excess stones that accumulate between the rails and on top of the ties on the outside of the rails. Easy.
I then carefully brush excess ballast from the outside edges so I can see the roadbed and what stones are there...which are different than the track ballast.
Then, I make sure that all the stray stones are off the ties and sides of the rails and anywhere else I don't want them.
I then apply wet water (no alcohol) to the dry ballast with an atomizer...soaking it. The atomizer shoots a fine mist onto the ballast, with droplets that are small enough that they don't form craters (important).
Then, using a large dose dropper, I carefully completely soak the wet ballast with ballast cement, so there are no dry hollows anywhere in it.
After the ballast cement is starting to dry, but isn't dry, I pick off any stray ballast rocks with tweezers. If I wait until the ballast glue is dry, picking off the stray rocks sometimes takes a spot of paint off with it...which I don't want.
I then weather the dry ballast with my airbrush, mimicking the photos I've taken of the UP mainline I'm modeling.
Then, finally, I clean the tops of the rails with my flexible Peco Brite-Boy style rail cleaner.
Done.
Photo (2) - UP Mainline Through Wilhelmina Pass:
Photo (3) - Code40 UP Park City Branch Ballast Without Using any Spreader:
This Common Standard Drawing gives specific information on what a mainline ballast profile might look like...
Photo (4) - Common Standard Drawing of UP's Mainline Ballast Profile:
I hope that drawing is large enough to read the measurements...
Cheerio!
Bob Gilmore