The halting problem is intractable only with infinite memory (infinite tape for turing machines).
Our current computers all have finite memory and so a trivial algorithm can tell if a real program on a real computer will halt (terminate) or not.
Of course the trivial algorithm has huge (but finite) memory requirement :)
Extrapolating logic to other realities requires no gaps in the system though. If it doesn't encompass our own reality how can we assume that it would even exist in others?
In the halting problem example, how often do you create infinite loops as a programmer? Even in the software verification space, proving termination of an algorithm is fairly simple. So, the halting problem doesn't really affect us in daily programming.
The same with the incompleteness theorem. The fact that we can't say _every single thing possible_ (completeness) has no bearing on our ability to say _an innumerable amount of very practical things._
The amount of things that formal logic can express is so vast and useful that, to call it "flawed" is a pretty big misunderstanding on the incompleteness theorem.