I have emailed my tutor about this particular question and he has come up with rather an interesting answer. The solution it would seem is to treat the two nodes as one "supernode". In this way the current through the resistor between the two nodes is totally irrelevant as is the current through the voltage source. This apparently is even simpler than it looks as it will then become an equation for one node having taken into account the voltage difference throughout the supernode.
That supernode idea seems like a pedantic way of introducing equation a-b=V3 into the game so, yes, a = b + V3, and only an unknwon remains: b.
But it is unfair to tell you to forget about the currents, because if I'm not mistaken they were asking you to solve this using strict nodal and mesh analysis. Of course, if you can do it freestyle, you can annihilate the problem like kulky64 did with the help of admittances, or like Ian did with an exhaustive list of all the variables and equations relating them. With that last method, you could even create a computer program to solve any circuit thrown at you.
By the way, the trouble arose in node analysis because V3 is a voltage source. Change V3 for a current source, and the trouble would have appeared in the mesh analysis. What is the dual concept to a supernode (a supercycle)? Does it really matter, if one has a grip on the fundaments?
I hope to God this stuff is going to be useful one day because I spent three days trying to figure it out the wrong way. I can't see me ever having to solve anything like this in real life, I just need to get the ticket for doing this stuff so that I can move on to something more useful.
When it comes to electronics, I'm just a hobbyist, but I think this stuff if pretty useful. Eg. analysing small signal models, or when dealing with passive filters and matching networks.
Review the maths involved: Rouché's theorem is the key, you need as many independent equations as there are unknowns. You can isolate one unknown at a time, which essentially amounts to Gaussian ellimination. Each wire connecting two nodes contributes an equation, and also an unknown (the current across it). In strict mathematical terms, you have a
graph, which you should turn into a directed graph choosing an orientation convention for the wires. If you look at a raw spice file, it is essentially a very sophisticated graph description language.
So your unknowns are: the voltage at each node, and the currents across each wire. One (arbitrary) node you can call earth, and assign 0V to it. As we said, if you have a current source at a wire, you know the current across it, so it contributes a linear equation I_wire = Is, which identifies that unknown. If you have an impedance, you get v_a - v_b = k·I_wire, a linear equation that relates the current to the node voltages. And if you get a voltage source, you have v_a - v_b = Vs, so if you know one node voltage, you know the other (the "supernode idea"). That is, you get a bunch of linear equations.
Two questions remain: 1) do you have enough linear equations? 2) are these equations compatible?
Question 2) is not always true: imagine two nodes connected by two different voltage sources. The equations involved are incompatible. So you must be given a coherent circuit, that's not your problem.
Question 1) is more subtle. First, you must not have isolated nodes (nodes with no connecting wires). It does not take much imagination to understand that your graph must be connected, that is, you can walk from node to node using the wires. Otherwise, you can reduce the problem to solving each connected subcircuit. So it is safe to assume that your graph is connected.
Assuming a connected graph, you get enough equations? Well, not always: if you only have two nodes, and they are connected only by current sources, the voltages at each end are unrelated. Here you get an undetermined problem, not an incompatible one.
So what can you do? Easy: carefully list all the nodes and wires; each contributes an unknown. Then, for each wire, derive a linear equation. Then try to solve the system. If you can, mission acomplished. If you can't, signal an error. That's what spice does.