We had some trouble in 2017 doing a EWR>YVR non-stop on "United" that was operated by Air Canada. Planned to get in late afternoon the day before and stay at a hotel in Richmond (near the airport), then take the SkyTrain to the Port the next day.
Didn't exactly work out that way since Air Canada kept on delaying the flight, finally cancelling ~11:30 PM Eastern (promising that we would get out the next day on the early flight).
It was not easy, nor inexpensive, and we only got 2 hrs of sleep, but my DW made a command decision and booked us on a separate one-way, non-stop, connecting flight leaving from EWR the next morning at 5:30am. With the time change, the taxi from Vancouver airport got us to Canada Place by ~1pm Pacific Time, and we were on our way.
It turned out that a few families that stayed with Air Canada missed the cruise as the non-stop flight they were "promised" to be rebooked on that was scheduled to leave at 11am, didn't leave until 1pm, getting them to Vancouver after 4pm.
So . . . on future cruises . . . we try to get to a remote city EARLY, do our sight-seeing BEFORE the cruise, and then leave from the cruise directly to the airport after. Yeah, we learned. And it was painful/expensive.