It would still take them a fair bit of time to do that, and then people would still not be able to play well. They need to fix the current problems before that.
They could have just the immediate things and leave it working while they build a new working system, IF they are planning on ending at some point with good service. Just putting patch over patch will never solve structural problems (under the assumption that there are some). And the amount of coding hours it takes to build a new system should easily be less than the amount of hours to correct all problems if the code is really bad.
Yes, there is a deep-rooted structural problem with the code. It's not possible to permanently resolve the current symptoms without rewriting the whole client.
Like most Javascript applications, the client code runs in lots of parallel threads. But unlike most good JS applications, those threads pay almost no attention to the state of the threads around them. When the threads all happen to resolve in just the right order, your login works and your game launches. But then you log in from Chrome instead of Firefox, one of the threads runs just a little slower, and you get a black screen instead.
Imagine a dozen elves assembling a bicycle without knowing which part needs to be attached first. Each elf just runs up to the frame and attaches the part he's holding. Sometimes the elves all arrive in the right order and you get a bicycle... but sometimes an elf tries to attach the chain before his buddy attaches the gears, gets pissed off, and murders the other elves and burns down the bicycle shop.
What users perceive as a single, fixable error (e.g. black screen when loading a game) is actually the common symptom of a dozen different potential problems. Which one is bothering you today depends on your network connection, the relative latency of the
apparently 29 different servers that Goko is running, and even seemingly irrelevant issues like whether you're using http or https. Remember back when the Goko's devs would insist that they couldn't reproduce a bug, or would suggest "fixes" like disabling your router's firewall?
So they could find and fix every place where problems are happening today -- and don't think that it's easy to understand or debug this kind of
asynchronous callback spaghetti -- but the same symptoms would emerge again in a couple weeks, when some unrelated hardware change exposes the next section of fragile code. Rewriting every section of code where one thread depends on others basically means rewriting every important thing the client does.