You don't have to choose between those two, there are more options. The cheapest and easiest is to buy new covers for the cushions - you can find them anywhere, they come in a thousand colors and textures, and you can put them on in 5 minutes without touching anything on the sofa. If you really want someone to reupholster them with new fabric, there are upholsterers who do that, but it costs way more than covers and they have to undo and sew everything. My recommendation is to try covers first and see if that solves it for you; if not, then you can think about getting them repaired or replacing the whole sofa.