Subdivision, rounded edges problem
It looks like you have some duplicate vertices and/or faces in your model. The first thing to do should be to remove your duplicate vertices. In Edit Mode, select the entire mesh by pressing A. Then, press W and click "Remove Doubles". This should help to clean things up. If this doesn't fix it, make sure that you are using the Bevel Modifier before the SubSurf modifier. This will prevent your SubSurf modifier from destroying your topology. Since you have a cylinder, you want the "curved" faces sub-surfed, but not beveled. To do this, set the Bevel Modifier limit method to "Angle" and set the angle to something greater than the angle formed between two of the cylinders sides (probably about 15 degrees). To get a cleaner bevel at sharp corners, set the width method to "Width". To get the curved effect in your reference image, increase the Bevel Segments and Profile. It should look like this: