I use Solid Builder, have since 1999.
You do not mention what your budget is, what you ask for will cost.
I am also a remodeler, it has worked well for me. There is a learning curve.
The way I use mine is to "build" the existing home, area or wall I will be working on. Build the new work. Make invisible the existing. Generate the material list. My estimate report is toggled to only cost out the visible tems. If you need to do work on an existing part, you can split that out and include it in your estimate.
The 3D renderings are photo realistic.
Once you tweak the extensive database, it will produce a material list accurate down to the fasteners. Mine counts the nails necessary to frame a wall, or shingle a roof. The cost is adjustable in the data base.
You can assemble from the working drawings. If you draw as you build, it will produce dead on working drawings.
It will produce prints equal to or superior to any you would get from a designer or architect.
I have yet to find something it will not do. There are times I have to stop and think about how to accomplish something.
I know from other forums and using others programs, Solid Builder will create the most complex roof(s) with the fewest entries. It has the ability to match fascia on irregular pitch roofs. It will also fit in and trim valley plates on a roof layover.
It allows access to the cad engine that runs the program. There are times I have had to use the engine to accomplish a task. One that comes to mind I needed tapered floor joists to level a floor.
There is a symbol generator incase you need to make an item.
All that said, you do need to put the effort into learning and understand how you interface with it and how it works.
So you know, I use Auto Cad, and Solid Works. I am learning Sketch Up, the interface trips me up so it has been a struggle.
Again, no matter which program you settle on, there will be a learning curve, at times you will want to throw in the towel. http://www.digitalcanal.com/
Seeing as I edited this at the link, they have an add on module to time track.