Best way to top up in CHF ?

Physical card with Revolut is not a credit card (so in theory you cannot use it for example for a car booking deposit), but it is a Visa (or MasterCard or Maestro), so you can pay in shops, use it for ATMs (up to 200 CHF/month for free). It is somehow equivalent to a card from PostFinance.
I’d advise you to get one of the free Credit Cards from Swisscard for example as a Revolut backup.

A virtual card is a MasterCard or Visa that exists only in the app - meaning you can use it only to pay online.

As you don’t have any card with Revolut yet, get a physical one - the first one is for free if you order it before Christmas (limited time offer).