You lack endurance. This is obvious by the massive drop in pace between your 10k and hm times. You need to run more miles, 20 - 25 a week just isn't enough to build a good endurance base. You should be looking at at least double that.
If your knees hurt, get them looked at by a physio. They really shouldn't be hurting unless something is wrong.
xtraining for endurance is best if you really can't handle the running. Anything - cycling; swimming; rowing machine; xtrainer. Build on your overall fitness.
I think that you set off way too fast for your last marathon. 3:59 is just over 9m/m yet your last 6 miles were run at 12m/m. You need to set off and maintain 9m/m pace for at least the first 20 miles, so run your long runs at 10m/m ans add a faster paced run at 9m/m. It's quite likely that you have the potential to run a marathon in a much better time but until you can or are willing to put in the miles it is unlikely for that to happen.
Try building up the mileage slowly with slow paced running, find out what is going on with your knees,maybe avoid to many road or hill miles to begin with, although you do really need to train on similar terrain to that of your marathon if this is going to cause you problems initially then maybe best avoided.
Really there is no alternative for running than running. Consider why you want to run marathons so much if you can't put in the training. Maybe stick to shorter distances or settle for slower times.