Subdivision problem during modeling
Blender can't figure out what to do with that big, oddly-shaped face on top.  You can see that even with a simple cylinder:



A few extra cuts on that face will make it smaller and convex, and it solves the problem:



That said, you should try to avoid large faces with more than 3-5 edges (preferably 4 edged quadrilaterals), which will give you the best results for subdivision.

Also, your initial model is very high-poly for a model you intend to subdivide.  Your UN-subdivided model is high-poly enough that it'd probably already work for most uses.  

For subdivision modelling, I always try to economize the amount of quads before subdividing. Here's a quick wrench I did that uses a pretty small number of vertices:



...but it still subdivides quite nicely:



Hope this is helpful!