Note: This suggestion may require the change of a Vanilla feature, and therefore may not be doable. If so, please let me know.
I always thought that it was odd that every arrow, blow dart, and crossbow bolt that hits an enemy is gone for good, and can't be reused. In The Lord of the Rings, (at least in the movies, and I'm fairly certain it happens in the books) archers, and most commonly Legolas, pull used arrows from the bodies of their (deceased) enemies, and use them again. So, I am suggesting that enemies killed with projectiles (from now on meaning arrows, blow darts, or crossbow bolts) will occasionally drop them.
Here are two methods as to how it might work:
Method #1: (This is probably the easier method, but slightly less fun and/or realistic.) When an entity is killed with a projectile, there is a 40%-70% chance that an arrow will be added to its drops.
Method #2: (This is my preferred method, but may be harder.) Every time an entity is hit with an projectile, a variable in the entity (perhaps in the NBT data) will keep track of it. When the entity dies, 0 to (variable) of those projectiles will be dropped.
Hopefully, this is a relatively simple suggestion, but if it needs improvements, please let me know!