The problem is that blocks, like most small parts made of solid wood, contain both end grain and flat grain. Finish builds quickly on flat grain, but the end grain seems to absorb it indefinitely, making it difficult to get a good, uniform painted surface. Fortunately, there is a simple solution that helps immensely: total immersion sealing.
First, a word about the wood.
Even with the best finishing methods, you will make your life easier if you choose your wood carefully. If you plan to paint, avoid woods with huge pores, like ash, oak, mahogany and walnut, and opt instead for woods that are tight grained and uniform. Maple, birch, alder, willow, basswood, boxwood, cherry and most fruit woods are good options, as are a host of other woods too numerous to list.
Sealing by Dipping
Before painting, wood must be sealed or primed. That process is designed to make the surface uniform so a coat of paint will behave consistently atop the primed or sealed surface. Since end grain wants to absorb more sealer, the best strategy is to let it do so.
The easiest way for that to happen is to completely immerse the piece in sealer and let it absorb as much as it can. Both the end grain and flat grain will absorb until they are sated. Once that happens, remove the piece and wipe off everything that was not absorbed. Although the end grain will have absorbed a lot more finish, the result will be that both end and flat grain have as much finish as they can absorb, with no excess finish on the surface of either. Let the sealer dry, scuff sand it lightly with 400-grit paper, and you are ready to paint.
Choosing a Sealer
My favorite dipping sealer, one that absorbs quickly, dries fast and is compatible under any paint, is dewaxed shellac, sold ready-to-use as Zinsser® SealCoat™. Thin your shellac to about a two-pound cut or thinner; SealCoat is fine as it is, right from the can. Just a few minutes of immersion will be enough for the wood to absorb what it needs. Then, remove the parts, wipe them with shop rags or, my favorite, those ubiquitous blue paper shop towels, and set them on an unfinished board to dry.
They should be wiped well enough so they are not dripping and will not stick to the board. If you can, prop them so that only edges or points are touching so that air gets to all sides. A needle board, (a piece of plywood with many wire brads sticking up through it), makes an even better drying rack for small parts, as the wiped surface remains in contact only with a few tiny brad points.
Oil-based varnish or polyurethane will also work as a sealer, and these are fine choices for use under oil-based paints. With oil-based materials, I prefer to soak pieces a bit longer, perhaps 10 to 15 minutes, before removing and wiping. Unlike shellac, which will dry in an hour or so, oil-based finishes used as sealer should be given at least 24 hours to dry, and two days if possible. Oil-based finish is an excellent choice for both sealer and finish for pieces being left in natural wood color rather than being painted.