Membership cancelled, but active until end date
I think I did a bit of both:

I created an extra membership status called Stopped. This is valid and active until the end of the year. At the end of the year I update all the Stopped memberships to Cancelled.