I do track and cross country and I have been very dedicated over the past three years in high school. I do a variety of distance events, but I am much better at the long distance runs. This used to be a problem, until I started doing the 1600 and 3200 in track. When I do the 1600, I'm literally running at my sprint speed the whole way. Our coach had us do practices for all of the events this year to see what we should do, even if we knew we wouldn't be sprinting, so I have accurate times. My time for the 100m is 21.12. My time for the 200m is 43.42. My time for the 400m is 88.12. My time for the 800m is 3:01. My time for the 1600m is 6:09. My time for the 3200 is 12:59. My time for the 5k is 20:54. My time for the 10k is 44:02. My time for the marathon is 3:39:08. The point of that unnecessarily long list is to say that I'm a really slow sprinter and that even at distances such as the 1600m I'm running about 23 second 100s which is not much slower than my sprint. How can I get my sprint faster? Thanks!
How do you run? Do you land with a full 'step' (like heel touches ground —> toes touch ground)? If you land and bounce off again from your toes, it might help you be a bit faster. I can't help much more, 'cause I don't have much experience, but I will say that you sound very consistent from these numbers. It's great you're so dedicated to this =)
I would recommend doing running exercises that work to increase your anaerobic threshold. If your coach doesn't already have you doing them, I would recommend hill repeats as they increase both strength and speed. This is a good description from About.com:
I'm a distance runner so from one runner to another, I suggest you consider working on your core, since that's where most of your power comes from when doing any type of cardio work, leg workouts (obviously) and running hills are excellent as well. Circuit training helps a great deal and so does jump roping for 30 minutes--doing so can greatly improve your form, making it easier to run.