It would be essentially impossible to have something "truly" fair for open-ended questions since humans are stateful.
Maybe this is a case that AI could actually do quite well.
Manually grade the answers and identify the classes of mistakes. Then hand the classes of mistakes to the AI and ask for it to determine which answers have which types of mistakes.
Once you've done that, you just need to associate a deduction for each type of mistake and do some simple math.
Imagine a question: compare bubble sort and quick sort algorithm.
Some students might mix up the algorithms, some might give the incorrect computation complexity, some might describe them incorrectly in some way.
Manually grade some (or all of) the answers by noting the kinds of things students got wrong (e.g. the above criteria). Then, feed in to ChatGPT (or your favorite alternative) the answer + the categories of mistakes to expect.
Maybe this is a case that AI could actually do quite well.
Manually grade the answers and identify the classes of mistakes. Then hand the classes of mistakes to the AI and ask for it to determine which answers have which types of mistakes.
Once you've done that, you just need to associate a deduction for each type of mistake and do some simple math.