I had the same problem
My dog was great until he hit three as well. He was a Jack Russell Terrier and was even neutered but nothing stopped him. He was extreemly cowardly as well so when we punished him he had a temper tantrum and did it again! The problem is that the dog doesn't think you mean it.
When he goes to the washroom you punish him right? Well thats not good enough. Take away his toys and put him in a crate! After about twenty minutes take him out. If he does it again repeat the process. Do not praise him even 10 minutes after he was bad. Because if you ignore him he will know that something he did was bad. This should fix the problem. It did with mine!