A Two-Stage Operator Splitting Algorithm for the Numerical Simulation of Contaminant Transport in Porous Media