Airlines are businesses (though it may not always seem that way). They have seats on planes and want to sell them for as much money as they think they can get away with. In your case, it seems that BA have decided that there are people out there who are willing to pay the higher fare. I would not assume that BA are "wrong" on this.
And for every passenger in your situation there will be someone who ends up choosing BA over VS due to the fare being more competitive in their case. For example, BA regularly undercuts VS on routes out of China and I know people who have abandoned VS as a result. But VS still manages to fill their planes.
Equally, there are times I end up flying AY on trips from China to Europe because they are much cheaper than BA and offer reasonable service. I would much prefer the nonstop flights of course, but others are willing to pay more and I have to accept that - life can be tough sometimes!