Another, simpler method (but may not be that neat) is to simply render the silhouette first with disabled depth test, then render the character normally, with enabled depth test. This will draw the non-obscured pixels on top of the silhouette, thus overwrites where the character is visible.
SOLUTION: This one worked! Finally got around to trying this out today, and stopping depth test to draw a silhouette copy was the easiest solution, then turning it back on again. Literally, my code:
...
glDisable(GL_DEPTH_TEST); // disable depth test for "shadow cube"
drawSilhouette();
glEnable(GL_DEPTH_TEST); // Then return to normal stuff
// call on cubeShape's function, drawCube, to make a cube visual
draw();
...
And over in cubeShape, my balancing (and admittedly a few magic numbers) to get the silhouette looking right...
// Grabs your rgb1 colors and makes a dark version of yourself
// Perfect for walking behind walls, but player identification
void CubeShape::drawSilhouette() {
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
glEnable( GL_BLEND );
glPushMatrix();
// These code blocks modified from work on songho.ca
// activate and specify pointer to vertex array
glEnableClientState(GL_VERTEX_ARRAY);
glVertexPointer(3, GL_FLOAT, 0, vertices);
// draw first half, range is 6 - 0 + 1 = 7 vertices used
for (int i=0; i<6; i++) {
if (!useNeighbors || !neighbors[i]) {
glColor4f(r1*0.25+0.125,g1*0.25+0.125,b1*0.25+0.125,0.5);
// 0 to 3 means we only have four vertices used for each face
// 6 is the total points we create though from those four.
// indices+6*i is where we are looking, which face in indices
glDrawRangeElements(GL_TRIANGLES, 0, 3, 6, GL_UNSIGNED_BYTE, indices+6*i);
}
}
// deactivate vertex arrays after drawing
glDisableClientState(GL_VERTEX_ARRAY);
glPopMatrix();
glDisable( GL_BLEND );
}
Turning on GL_BLEND ended up being important to have it work with what was already there, rather than just being a starkly different color.
Anyways, it works now, and I'm quite happy with how it looks!

Thanks everyone for helping me get this far!