Freezing tracks is definitely a good way to save on CPU.
I have never bounced my instrumentals and mixed my vocal over that. I would recommend mixing your vocal with the rest of the track.
If you're having a CPU problem one issue might be copying reverbs/fx plugins to multiple tracks? Reverbs especially take up CPU so if you're planning on using the exact same reverb settings for multiple track elements I suggest you put them on an aux send so you can bus specific amounts of your snare, vocal, synth, etc to the same reverb, delay, or whatever effect. If you're confused about what I mean here I can go into more detail.
Alternatively, if you're done editing you can just bounce stems of each individual element to audio and make a new session just for mixing the track. This would have each individual track element on its own channel and you can set levels, EQ, compression, etc without having to worry about crushing your CPU with synth plugins.