With regards to the humungous loss of bolts: Make your archery range as long as you possible can, and give a space of 2 tiles or so between each target. Behind the targets, put a trench and then a wall. This increases the chance that the dwarves will miss while simultaneously allowing you to collect the missed shots. The main issue is that dwarves become more accurate as they get better.
Dwarves get xp regardless of whether or not their shot hits, by the way.
Alternately, set up a very wide, fortification-ringed arena, preferably circular and about 30-40 units in diameter. Have a 1-tile walkway running around the whole business adjacent to the fortifications, with a trench around that, and create a barracks that covers the walkway. In the center, drop a few undead. Your dwarves will go there for melee training, spot the undead, and then shoot bolts off until they either run out of ammo or finish their training. With such a vast gap between them and their target, the undead will have ample chance to dodge, and the missed bolts will fly through the opposite fortifications and fall into the trench. Due to the huge space, this does have the disadvantage of an increased likelihood that the bolts will fall short and land inside the arena, but that is countered by the massively increased xp gain from using live targets.
If you have no undead, normal hostile wildlife/goblins will suffice, but they just don't last as long before needing replacement.