FWIW, I'm on O2 and have had the same number with them since 1999. However...
The number came from a work phone that I kept when I was made redundant. And the company had started out with Hutchinson Telecom (who I think may have morphed in to, or been sold to, Vodafone at some point). They then switched to Cellnet and had all their numbers ported over. Cellnet became MMO2 and then just O2, but my number is still the same and if you check the number ranges per network it is still in the Vodafone set.
Virgin have changed their bill design now, obv, but for a long time calls to my phone were shown as calls to Vodafone and charged at the Vodafone rate rather than O2. I must check to see how they charge them now - the same logic, I'd guess (my family is well schooled to call me using their mobles and included minutes, but one of them still forgets now and then

)
Maybe this is the problem - did you port a non-Virgin number over to Virgin? I'll bet their landline and mobile billing systems are diffrerent and treat the charge data differently...