There are a few steps involved in the creation of test questions, and some of them can be time-sinks that are not amenable to any optimizations. The typing of the questions, answers, and rubric, for example depend on your typing speed, and that's not subject to change with new techniques. Your choice of tools for creation of the questions might make a difference. Changing tools, however, is going to come with a learning curve to switch, which probably destroys any gains for a while. Of the steps involved I can only think of two that seem open to techniques for reducing the time spent. Leverage scale and spiralize the writing process.
Scale
Many of the questions on an exam are going to be simple tests of knowledge. Such questions are in the dime-a-dozen category, using relatively small amounts of time to create, and needing very limited vetting. The original question seems focused on the questions that involve the student writing a code block, or program, as an answer. Faster generation of such question can be accomplished by using scale: scale the questions up or down, and the economy of scale concept.
Keep the questions atomic. The less complex the question, the faster you can create it and, in your own mind, vet it. So reducing the scope of a question increases the speed of making it.
Make questions that have larger answers. The ratio of time spent imagining and designing a problem to what it tests seems to geometric. A little extra time working on a scenario can make the question cover a lot more concepts. You can have fewer questions that require more work from the students, and cover more concepts from the course, while still testing all the points the exam should assess.
Make the question bank in one pass, not over time. (This is an investment in the future. More time spent today less time tomorrow.) When you are trying to create a question that will cover a concept your mind is focused on that point. You probably have several ideas and spend time choosing which one to use. Don't choose one, choose several (six for a reason explained below). When you focus on the next concept your mind will switch gears and you spend time getting into that one and most of what's in your mind now will be lost. This uses the time spent focusing on the concept in question once rather than doing it again for each test.
Spiralize
Vetting of the questions seems to be up to the students. From the question's wording I am left with the impression that you consider a question vetted after it's been used on an exam, and was understood by the students well enough to answer the way you expected them to. That leaves me wondering what happens when a question does not pass the test. I'm going to guess that the problem of disconnect between what you wanted and what you got, when it happens, is connected to the same issue programmers solve by using naming conventions: familiarity. Solve that problem by creating the tests in a spiral pattern. If you use the last bullet above, you can even make it a double spiral.
This is a good place to use paper over digital, especially if the exams are issued on paper. Write down each problem you create in basic details. Using enough for you to recall it later without "fleshing it out" until later. Once written, so you won't forget it, move on to the next question. Having recorded all your ideas for question, return to the first and begin adding details, and cleaning up stray elements. What you "thought" the first time through is now muddied with everything you thought about since, and the question may be less clear than it was at first. Again, go through the questions, doing clean up, but not answers, yet.
Once all the question are "polished", you can return to the first one and begin to create your answers. If the questions still need polishing, certainly do so now. This pass through you are in answering mode, and more resemble the student's approach to the question. It's not new material for you, but it shouldn't be new to them either. If you can answer the question in the same way, now, that you'd expect the students to, then it's probably vetted enough to add to the question bank.
Why 6 questions?
Most schools cover a range of student years. Groups of four seems to be quite common. If a question is used from year to year it is possible that last year's students can provide answers to this year's students. With multiple questions available this can be reduced, but not eliminated completely, unless there are more questions than years in the school's coverage. Giving the same, exactly, test again later creates the possibility that the previous version is archived on the Internet somewhere - people will do almost anything, and students are no exception. Randomizing which question in the question bank to include on a test makes each test unique and any archived test will have limited value for the current one. If the bank has 6 versions available and you disqualify the last 2 used and the school does have 4 years worth of students, then the randomly selected question will have only a 25% chance of being seen by anyone currently in the student body, and the value of retaining previous answers goes way down for past and future students.
Bonus technique: Serendipity
Your mind is usually most focused on a concept when you are trying to explain it to students and answering their questions. Often you will have sudden inspirations of how to use, explain, or demonstrate the current concept. Such inspirations make good leads into great questions on an exam. Save them! In another answer1 on note taking another user suggested the "Hipster PDA" for the students. It makes a great note taking tool for instructors as well. Use your own Hipster PDA to take notes of such inspirations when they occur and you can greatly reduce the time spent on "inventing" the problem for a question later. You cannot, unfortunately, plan to have inspirations, but you most certainly can plan to capitalize on them when they arrive.
1 Thanks to @Buffy for the Hipster PDA concept.