Using a Subdivision Surface (HyperNurb in R12) is the way to go and keeping the underlying mesh as simple as possible is the way to go.
I made the main body from a cylinder (no caps) with 1 Height Segment - 20 Rotation segments (if the fins need to be thinner use more segments) and spun the body 9° (360/20/2) so the side polys would be pointing directly sideways (at the engines, simpler later on).
Added cuts with the knife in Loop mode, as few cuts as possible, and sized them to make the shape, up near the top more to get the changing slope, fewer in the middle but there *have* to be cuts (with the SubD/HNurb off) at the top and bottom of the connections between the body and engines. The HNurb has to off when making the cuts for the connections because even though the cuts appear to be in different places with it on once you connect the engines and turn the HNurb back on the resulting connection is where it should be.
Copied the body to make one engine, scaled down, made a few changes since the top is shaped differently, copied that to make the other engine then selected the polys on the main body - noticed that would be two polys on the engines and one on the body so went to body and made a cut around the body to make it two polys too (makes the connection better).
Connected all the parts into one mesh (Connect Objects) selected the polys to which would make the connection and did a Bridge between each engine and the body). Then to make the connections more aerodynamic made a cut halfway along the connection and scaled points at the bottom of the resulting loop closer so the bottom of the connection is thinner.
10449_rocket2.c4d.zip