They're all correct, but C and D are specific to British English.
British English can use 'at the weekend' or 'at weekends' to talk about things that happen on Saturdays and Sundays, so C is correct in BrE. American English speakers only use 'on' with 'weekend/weekends', which is why you have received supposed corrections from people who presumed this was wrong.
D is also correct. 'On holiday' is equivalent to the AmE phrase 'on vacation'. For example, if you spend two weeks in the countryside or by the sea every summer and this is the time when you play the piano, you can certainly say 'I play the piano on holiday'.
NB If you're in doubt about whether to use a British or American English phrasing in an international context, it's probably better to use an American one. We're all familiar with AmE from mass media and technology.