Reference Model Design ! C-Based or Can it be done with the SV-OOPS Based ? Which would be better approach?

Those pros and cons are good.

Here’s one possible approach:
Staying within SV should be your default choice for coding a new reference model where one does not already exist… unless some requirement arises during your initial design work, that makes a C or other foreign model a better choice.
The OOP features and data structures within SV are sufficient for most purposes.

…and the flip side:…
Reasons to switch away from that default might be a requirement to write lots of new SV code to implement standard algorithms or more complex data structures, e.g. file/parsing, sorting algos, that may be available off the shelf in C. Note that performance is not normally a big concern either way but you should know where the bottleneck lies in your TB performance.

Counters?
They are usually pretty control-oriented, predictable functions, easy to model in SV. For any counter design I can think of (whether it’s a simple realtime clock or a complex software-radio-timing-algorithm for GSM/UMTS/LTE), I’m probably going to choose SV 99% of the time, unless I need a whole off-the-shelf matlab UMTS/LTE model anyway for something bigger than just the counter part.