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!