There are two factors involved in the acquisition of bone for crafting, first butchering to release the bones, and then having the bones available for crafting.
Some creatures are not butcherable, and some of these are sapient, while others are not. Unbutcherable creatures can be made to yield bone through "natural" butchering, such as traps that cut pieces of them off (in particular arms and legs), or a splatterer. Complete bodies will not yield bones when they've rotted (which is why the dorfs carry skeletons to the butcher from the caverns: to butcher the skeletons to free the bones).
Now, free bones are available for crafting only if the creature it came from is deemed not to be sapient. Somehow the fact that the creature it came from was undead overrides the fact that they were sapient before that. So elven bones can be used only if they come from a reanimated elf. I haven't fully verified that killing a sapient, reanimating it, and then rekilling it will result in a body of a non sapient, but I believe that's the case.
0.42.X changed the stockpile usages of the corpse stockpile and the refuse stockpile. Before that all dwarves, citizens, invaders, and undead alike, were sent to the corpse stockpile, while everything else, sapient or not, was sent to the refuse stockpile (some pieces into the refuse/corpse sub stockpile, which many confuse with the top level corpse one), and all free bones except dwarven ones (undead or not) were available for crafting.
From 0.42.X onward, the corpse stockpile take all body parts of all sapient creatures, while the refuse stockpile takes everything else. This means the refuse stockpile will no longer take anything that freak dwarves or merchants out. The refuse stockpile now take parts of reanimated former sapients without problem. All free bones in the refuse stockpile are available for crafting.