It sounds like you may want some flexibility in your travel plans. I would go through a site like Agoda which has rates for free cancellations or look at hotels that state their refund policy for cancellations. Because I was going with my family, I booked the Halong junk directly with the company ahead of arrival and it worked out great. I would recommend going with a reputable company and reading the fine print. On the other hand, if you're single and have flexibility, you may want to wait to arrive and book a junk thru the hotel. We booked a hotel for 1 night, left for Halong Bay, came back the next day with our bags still at the hotel and confirmed reservations and they STILL said they were overbooked and we didn't get our room even though we had already paid for it.