You could ask Elias (e.g. on
Twitter or the forum) how he did his implementation.
Other than that, the simplest approach probably is to reuse the vertex data, but instead of drawing quads with a texture, you just draw colored Lines or LineStrip. Using a vertex array with Lines or LineStrip has the advantage of automatically giving you 1px thick lines regardless of zoom (afaik).
As for highlighting, you'll first have to do some math, to figure out where your mouse cursor is located (don't forget to map it from screen space to world space) and then you could just draw a semi-transparent colored sprite over the square you're selecting.
As for redundancy, it might be simpler to just not care about it, as long as it doesn't have visual issues.
In the end, it's really just a bunch of math and using the right tool for the job. My advice with such a thing is to sit down with pen and paper and make sure you got the problem down conceptually. Only when you know what the real problem is, you can start to apply solutions.