Then the answer to your question is : It depends. The deciding factor would be the condition (strength) and size of your current roof joists. If you put in a knee wall, or vertical roof supports, your current joists have to bear the weight of both the old and new roof. Normally, knee walls are supported by a load bearing wall beneath them. With the old roof already sagging, that indicates the condition of your joists are already not up to the task. Removing the old roof may allow you to just beef up the weak joists, but maybe not. If you use trusses instead of the knee wall, then the weight of the new roof is borne by the walls.
From a practical standpoint, trying to install a new roof over an old is very frustrating and time consuming, as you have to cut through the old roof for all your attach points. From a volunteer firemans' standpoint, we hate double roofs whenever a fire gets into that space, as it is very hard to impossible to safely gain access to put out the fire as well as to locate any fire still remaining. So, for ease of work, weight considerations, and fire safety, I would recommend removing the old roof.
Just pointing out concerns that I would have. I am not an expert, so would go with someone here with more construction or architectural experience for the best fix to meet your needs and budget.
Terminology that I used:
Rafter: the board that holds the roof material
Joist: the horizontal boards from wall to wall. They hold the ceiling material as well as keep the walls from spreading.
Truss: a manufactured (on site or commercially) assembly of triangles that support the roof, and may also have the horizontal boards to hold the ceiling. Due to the strength of triangular construction, trusses can sometimes be made of smaller dimension lumber, depending on the truss design.
On a flat or single slant roof, the joists and rafters are often the same board.
All readers, please feel free to correct anything in the above that I have wrong.