You render the internal object as before, then adjust the transparency of the resulting image by rendering the alpha-textured shell with the blend mode set to glBlendFuncGL_ZERO, GL_ONE_MINUS_SRC_ALPHA(GL_ZERO, GL_ONE_MINUS_SRC_ALPHA). The alpha values from the shell are used to scale the image of the object internals that have been rendered into the framebuffer. The alpha values themselves are also saved into the alpha buffer.
Now depth buffer update is disabled, and the surface textured shell is rendered, with the blend mode set to glBlendFuncGL_ONE_MINUS_DST_ALPHA, GL_ONE(GL_ONE_MINUS_DST_ALPHA, GL_ONE). In this way the internal part of the object, which has already been scaled by 1 - srcalpha is summed with the surface textured shell, which is blended by 1 - (1 - srcalpha) = srcalpha, giving the desired result.