We (try to) use Agile at work. It's a methodology for project work based on the idea of fixed time periods wherein you work on certain things. They're called "sprints", and you generally make a sprint one to three weeks long. In Agile, you have a planning meeting, wherein you set the goal of the sprint. Every day, you have a status meeting, wherein you discuss where things are, what got done, what didn't, etc. Then, at the end of the sprint, you have another meeting to wrap up that sprint.
One of the reasons to use Agile, and the reason you'd divide time into blocks like this, is to allow flexibility. During a sprint, you set your plan for the sprint at the beginning and you stick with it, no matter what. If additional ideas come up, additional tasks get assigned, etc, you do not divert from the plan, not until the sprint is over, and then you reassess where you're at and what needs to be done.
I think there's a lot of value in it, and in the idea of setting your plan and sticking to it. In my own personal coding experience, drifting between ideas and tasks often means nothing gets done. I pause one project to look at another, and when I return to the first, I cannot remember what the heck I was doing, or how this all was supposed to work.
So, my advice, would be to borrow some from Agile. Give yourself some time, and give yourself a task or two you want to work on. Work exclusively on the plan for that unit of time, and do not take on anything new, do not move in any new directions, etc, until that time period has ended. Then, look at your list again, and decide. This should keep you focused and out of the situation where you need to re-familiarize yourself continually, but also prevent you from stagnating (we all know if you get 'stuck' on something, it's easy to shelve everything).