Hi and welcome!
I think the general approach may be the problem here. Every 3-4 hours would be a very, very long time for a young pup to have to hold himself -- generally the maximum time is an hour pr month of age. If he was left to hold it when younger for 3-4 hours, he has likely learned to just go because he needs to, and no one was there to get him outside -- he really needed to be taken out every hour or so initially, and always after sleeping, eating, paying, drinking. He always needs to be at arm's reach so you can get him out instantly, when not asleep or in his crate.
If he is soiling his crate, is this at night or were you leaving him inside during the day, or was he wandering into an open crate and going? Again, 3-4 hours would really be too long for him to be left in a crate generally during the day (he'd need more activity and exercise and stimulation than a crate would provide for long stretches, but sounds like you have a crate set up in a pen perhaps?) and he needs at this age a very active, attentive approach to housetraining -- it is very time consuming but pays off. If he is allowed to have accidents over and over, each single time is a small step back so it really delays the longed-for day when he is almost completely reliable (do however expect the very occasional accident, generally due to illness, a new place he doesn't know, or we owners failing to get them out in time!). Be sure you are not giving a pup too much free rein -- people tend to do this far too soon, believe the pup is housetrained well before he actually is, and don't notice the little puppy wees and poops (sometimes at all, because they wees are done quickly into a carpet or behind a sofa), and this really lengthens the struggle to housetrain.
In the Library section there are excellent links on housetraining and I'd also recommend immediately downloading the free copy of Ian Dunbar's excellent 'After You Get Your Puppy', which will give housetraining info in detail. Also, Shirlee Kalstone's book on housetraining is also excellent and gives schedules.
Dunbar book:
http://www.dogstardaily.com/after-you-get-your-puppy-0
Remember never to punish, always to reward (you never, ever need to be stern when training at all!
), and keep in mind that puppies make mistakes inside because 1) they are still babies -- a pup will not be mostly reliable until age 6-7 months generally so he really is still to be expected to have accidents; 2) we don't watch them closely enough; 3) we leave them too long when they really gotta GO!
At only 16 weeks, your puppy may not even really have been comfortable lasting the night and this is likely why he would have been soiling his crate (generally something to avoid at ALL costs). Pups may go on themselves without even waking -- so at first it is always a good idea to get them out at 3-4 am anyway just to set the groundwork for a clean crate but sounds like he's beyond that now). Young pups often need to be taken out in the middle of the night until they are around the age he is now.