http://www.mvm.org/workouts-drills.php
One of the most important factors for powerful and fast swimming is early vertical forearm. That is - upon entering the water, forearm is in a vertical position allowing you to catch and pull water. To see what I mean, view this short clip:
http://www.vasatrainer.com/index.php?page=Movie_WMS08_EVF
In my opinion, too many adults who learned to swim with very "slide and glide" approaches never learned proper catch and pull (ie., Total Immersion - which is great for teaching balance & body position but tends to stall there). Instead, they are trying to slide their way down the lane while using their forearm for maximum glide/extension. The problem with this approach is that it causes your elbow to drop (if you have been told you "put on the brakes" when swimming by gliding your hand forward, you do this). Once elbow drops you effectively lose all power in your stroke. The other problem is that you will be overstretching your back muscles and putting loads of stress on your shoulder. Proper swimming should be felt in the lats - not the shoulders. You achieve this by engaging the lats (think 'shrugging your shoulders') then reach OVER the water with your elbow high (not dropped!), forearm vertical and then pull water.
Another common error is using your hands to pull water. The hand does not pull water. Rather, it enters the water slightly pitched down, fingertips first (not thumb or pinky first) and slightly spread apart (not cupped or tight). The forearm then pulls water (hands goes along with it) and then the elbow leads all the way through to the recovery of the stroke. Elbow is high throughout the ENTIRE stroke, especially above water (fingertip drag drill teaches you this) where the forearm finally relaxes (recovers) so it can begin it's powerful pull underwater again.
The other key to this is a powerful rotation in your hips. Your hips rotate your body out of your forearm's way. All power initiates from the hips in swimming. A good way to teach this is to do side kicking drill. Take six kicks then switch sides but LEAD with your hip (most tend to rotate THEN hip follows - actually the hip leads first). Another way to feel the power of your hips is to head to deeper water; give yourself a hug and while vertical kicking, use your hips to rotate yourself 180 degrees. It's hard but done correctly it shows you how powerful hip rotation is! Try rotating yourself a full 360 degrees.
Be sure to fully rotate your hips on each side. Most of us have a tighter or weaker side. You can usually see this if you tend to veer one direction or if you feel like you are "fishtailing" in the water. To practice full rotation, use a pull buoy and rotate fully. then take the buoy out and emulate what you were just feeling. Remember, a powerful rotation is built from a powerful lower core. There are many ways to strengthen your lower core. A very simple one you can do while even brushing your teeth is to stand straight, now tuck your butt under while drawing in your lower abs. Do this slowly and powerfully. To strengthen your lower core, you can also include some dolphin kicking (with fins & board - think about pulsing your hips/pelvis from your lower core with knees together, extra points if you do this without fins!).
While you need a strong pull and powerful rotation for good swimming - the other part of this is the kick. As triathletes we do not necesarily want to rely on our kick for power. The kick is very powerful yet costly in terms of energy consumption. It can also be used to correct poor body position as the kick fights to keep you on top of water. That is not the kick's purpose, however. A bad kick will hurt you - so it does pay to work on the fundamentals of the kick. Watch this video for how to kick properly:
http://www.goswim.tv/entries/5749/freestyle---flutter-kick-basics.html
Finally, flexibility is the yet another key to good swim form. If you are right-handed or breathe right side only, chances are you are tighter on your left side. Spending a few minutes a few times a week to work on stretching this area will help balance you out in the water.
A side note about breathing: when you are doing faster sets or racing, you may find it better to breathe one side only. Oxygen in swimming is GOOD and you want as much as possible! Never hold your breath because it feels faster or improves your form. The cost in oxygen debt is not worth it. Bilateral breathing is great for warm up, drills or cool down but I highly encourage you to do what feels most comfortable and what gets you the most air when doing fast sets or racing.
All swimmers can afford to work on their form. Especially if you cannot swim your 100s consistently in under 2:00, your most useful time in the pool will be spent drilling and working on form. If you have been stuck at a plateau for awhile, your limiter is not fitness, it is form. Form builds efficiency and efficiency comes before speed.
Thanks to Joe House for providing this information!