First-Order Logic in Finite Domains: Where Semantic Evaluation Competes with SMT Solving