After a few permutations and combinations, I have found a workaround for this.
Basically, I forced all BGP routes imported on both PE-1 and PE-2 within the "VRF-OSPF" routing instance to have a Preference (AD) of 9. This is lower than the Internal OSPF preference of 10. Then advertise the inter-area route with a lower cost on PE-1. BGP is preferred on both PEs even though I still get the route via internal OSPF on both PEs but doesn't matter. Also, due to better cost from CE-1, CE-2 now prefers CE-1 to X.X.X.X/24. I did a few failover and all works great.
Appreciate your time and effort Alex. Thanks.