In all likelihood, the reason you weren't able to pre-reserve the seats with the bassinets are that they are blocked off for passengers with babies that need bassinets.
CX tends to be very good about making these seats available to passengers that need them for their babies; however, the only way to get these seats is to call CX and have them assign them for your use.
As the flight's departure date approaches, CX will begin releasing these seats to other passengers. At times, it will also assign these seats to top tier members of its frequent flyer program, with the understanding that they may have to be reassigned to accommodate babies.
In the future, just give them a call--- that should solve the problem.