An accurate and efficient semi-implicit method for section-averaged free-surface flow modelling