Faster block diagonal construction