I think you're underestimating just how complicated the standard UITableView cells are, if you think adding a dozen controls makes the view complex. :-/
You get smooth scrolling by avoiding/delaying time consuming operations during scrolling. Loading and decoding an image is time consuming, that's why you see code samples where a temporary spinner control is placed in the cell, and the image is added by a queued operation.
If you have different cell layouts, then you also probably want to ensure that each distinct layout gets its own distinct reuse identifier. That way you spend less time refurbishing cells.
If your cells have different heights, then that can slow down some table view operations proportional to the number of cells in your table.
And, finally, the best suggestion I can give you is that there are WWDC videos on optimizing scrolling performance, and Instruments has tools that you can use to profile your code to find out what's slowing down your scrolling. You can make complicated cells scroll well.