I finally found a solution that helps with my layout. It's a mix of Taras Romaniv's answer and Christoph's comment, together with this technique to hide the scrollbar.
A working fiddle can be found here
To hide the scrollbar dynamically, calculating the width of the scrollbar, I use this
var blockset = document.querySelector('.blockset');
var vScrollWidth = blockset.offsetWidth - blockset.clientWidth
var panelWidth = $(blockset).outerWidth()
$(blockset).css("width", keysWidth + vScrollWidth)
Blockset is within Panel and after this code it's wider than its container by the width of a scrollbar so the scrollbar is now out of view.
Next, as the bottom scrollbar of the content region adds length to the vertical scrollbar, we have to compensate for that also.
var content = document.querySelector('.content');
var hScrollHeight = content.offsetHeight - content.clientHeight;
$(blockset).css("padding-bottom", hScrollHeight)
We are adding the height of Content's horizontal scrollbar as padding to Blockset. Now when we scroll vertically, both sides will have the same height.
Finally, we synchronize the bars so scrolling vertically on one section will scroll vertically the other.
$(content).scroll(function () {
$(blockset).scrollTop($(content).scrollTop())
});
$(blockset).scroll(function () {
$(content).scrollTop($(blockset).scrollTop())
});
And it's done. Having two sections scroll vertically simultaneously but with independent horizontal scrolling is now possible.
A word of warning: I'm using border-box as my box-sizing. To use another box-sizing you will have to change many things.