Retake the GRE, and prioritize that just as strongly as your school grades. Given the amount of hours and classes already accounted for, a significant push on the GPA end may not yield as great results-wise as desired. The GRE, in my opinion, will account for a proportionately greater value on the application. As mentioned by other posters, I would include the difficulties and travails experienced, but I would not portray that in a light that would make you seem unprepared for advanced education, or betray any weaknesses that would make you less qualified in comparison to other applicants. Think of this from the admissions officer or advisor's perspective; don't overestimate their empathy, especially if it's a great school with a competitive history department.
As for the GRE itself, I started preparing in my senior year of college, taking the odd online exam here and there, and averaged at about a 1350. (This was in 2009 in the old system). I then, throughout the next 2 years of working, purchased several Barron's books and the Princeton Review one. I found that simple practice achieves much greater results than anticipated, because not only are you getting accustomed to the difficulty of the questions and time management, you also increase your knowledge base and gain a greater understanding of the type of content that will be on the test. A few months of reviewing vocabulary (an absolute requirement), brushing up on sentence, grammar, and critical reading/comp, one notices a distinct improvement in qualitative results. The PowerPrep software was a great, accurate tool in helping and assessing performance, best used IMHO at the end when you're just about done with preparation. The night before I took the real thing, I took 2 practice exams and got in the 1500s range. The next afternoon, I got a 1520 (720 V 800 Q 5.5 AWA), which was consistent with the scores I got from the 2 final practice sessions. All it comes down to, in the end, is practice and exposure. A few hours every other day, 1 or 2 practice tests a week, and you'll be set. As for the writing, I found it most efficient to write them out, timed, and then have you, a friend, or significant other review what you wrote, grading on the rubric and comparing it to the sample answers provided in the books. This improved my writing from about a 4-ish level to a 5.5-6 level, and that experience continues to help me now with my writing in grad school.
I understand that everyone is different and everyone is exposed to different things and responds differently in terms of standardized testing. The best thing to do is hold yourself to a reasonable target result, aim to surpass that, and practice, practice, practice until you reach that range, and then increase it to aim for a new goal. That way, the progress you demonstrate will help to boost your confidence and make that next objective more attainable. At the end of the day, practice makes perfect.