It also seems that your solution ended up showing some artifacts on some edges (see your bottom left cube, the one with the yellow ball).
I noticed that too. Most of those irregularities are because of specular aliasing/undersampling. (More rounded corners won't actually help in that regard.)
Then there's also: http://www.google.ch/patents/US8049753
Interesting. It's a bit hard to read, but it deals exactly with what I'm trying to do. Thanks.
They create a normal vector that's a blend between two weighted smoothed/unsmoothed normals based on the distance to the nearest (hard) edge.