> I wonder if its possible to avoid code that is meant to represent real-world business logic from being too complex.
Yes. But only for the first couple of hours until someone who {missed the meeting, forgot something, didn't check, etc.} comes along with changes.
(Alas, this happened to me over the last two weeks and now the pristine simple logic is a fudged mess.)