Every piece of wood is different, including balsa, so you're probably better off with a system to determine how much ballast weight each crank of a particular "identical" batch will need, and use that for those lures.
I only use balsa when I want a really buoyant lure, because it's buoyancy really makes lures lively, and is what sets it apart from other woods and materials.
If you want a lure that sinks, there are lots of other woods that are easier to work and denser, so they require less ballast. Pine, fir, and poplar come to mind as woods that are readily available, and heavier than balsa, but still workable and buoyant enough for lures.
I've found that any lure needs buoyancy, so I can add ballast to the belly and still have it sit upright, even on suspending or sinking lures.
Whenever I make a new lure, I add the hardware and hooks, and then float test it to determine how much ballast I need to get it to sit like I want it to sit in the water.
I add split shot or egg sinkers to the tines of the trebles until the lure looks right.
On cranks, I ignore the weight of my Createx/urethane paint and topcoat.
On swimbaits, I figure the whole paint/top coat scheme weighs 2-3 grams, and allow for that in the ballasting.
Once I've determined how much a particular bait needs, I use that as a guide for the rest of that shape and size I make. But only as a guide. I've made batches of six swimbaits, all hand shaped, and they vary by as much as three grams in their weight before hardware, so each one has to be float tested to determine how much ballast it needs.
And I'm using PVC, which is uniform in density. Wood varies more.
The only truly consistent lure bodies are injection molded plastic, and even they can have slight variations.
I've made peace with that, and actually enjoy the part of the process where I determine the ballast each lure needs.
Sorry to be long winded, but you asked, and this is how I do it.