Here's a possible way, using TreeForm directly, and with VertexRenderingFunction. I think this is what you describe in your second paragraph. I hope this is useful to you
TreeForm[1 + Sin[x^2], VertexRenderingFunction -> (Inset[Panel@Rotate[#2, -\[Pi]π/2], #1] &)] // // Rotate[#, \[Pi]π/2] & 