Four hours is far too long for him to struggle with homework. After 1 1/2 hours max, he should be done with all of his homework, whether he's done or not. At that point, his brain is done, and the more you try to get him to focus, the more unfocused he will become. Remember, he spent 6-7 hours doing school work in school, is it reasonable to expect him to do another 4 hours at home? We adults work 8 hour days, why would you expect a young child to work 10+?
You need to give him breaks when he starts losing focus. Let him do something physical for 10 minutes, then come back and work. Another little trick is to tell him to work for 20 minutes and get as much done as he can with good quality, and if he does, you will give him a few M&Ms or some other small treat.
Maybe he just isn't ready to learn double digit mutliplication in 3rd grade, it's developmentally inappropriate to expect that of him. I would not push it at all. When he comes back to it next year, it may just click and he won't have any trouble with it. It's pointless to stress over something that he just can't get his brain around yet. Let it go. It isn't worth it!