The trees have a random growth pattern to them and the oaks (and I think birch?) are able to grow really tall some times. Is there any way to ensure this growth or to encourage it at the least?
You can surround the Sapling with 1 or 2-block high cobblestone (or any hard stone block really), leaving the top open for the tree to grow, or make 5-block high pillar as shown in the video below.
The Minecraft Wiki explains this briefly:
What happens when the game decides that a Sapling should try to grow into a tree, is it first selects a height of tree, and then checks to see whether it will fit into that space. The tree will not grow if it cannot.
Placing the cobblestone around the sapling, you're effectively stopping 4-5 block high trees from growing.
This will mean that the tree takes longer to grow, or cost more Bonemeal (as each time it attempts to grow the tree, it has more chance to fail).
Here's a video, showing a slightly different process. In this one the user is making 5-block high pillars next to the sapling.