First, feed in the enclosure. By removing the snake from the enclosure to eat, you are teaching it that handling time = feeding time, which makes it more likely that your snake will bite. If you don't want your snake to ingest substrate then put down a small plastic plate somewhere and put the feeder on that.
Second, your snake is underfed at 3 fuzzies a week. Try offering either one small mouse or a rat pup every five days for a few weeks, then bump to a rat weanling when he hits about 400 grams (you can weigh him on a kitchen scale).
Third, most snakes in tanks will rear back and look at what is approaching them from above, as this is the direction predators (birds) often approach. This is one reason I prefer reptile enclosures with doors on the front - you can bring your hand in from the front, or rub your snake gently with a hook before you put your hand into his home, which isn't as threatening and lets him know he's about to be handled.
Fourth, not every ball python is pet-quality, and by that I mean while most eventually outgrow their nippiness and defensiveness that is normal in a baby, there are some individuals that will never tolerate handling very well without a lot of work.