Thanks for all of the feedback and advice Rodrigo, I genuinely appreciate it.
After a lot of head-desking, I went back through some of my earlier sources and found a troublesome snippet of jQuery code that I had previously overlooked, and have so far been unable to convert to pure JS - even with the help of sites like http://youmightnotneedjquery.com/
The code in question looks like this:
var $slider = $("#slider")
$slider.outerWidth(sliderWidth)
sliderWidth is the total width of the scrollable area (i.e. the number of slides * the width of a single slide). When I console.log '$slider.outerWidth(sliderWidth)' it returns a jQuery object (fn.init) rather than a value, which is what I would have expected. Without that code, the main slider will not function correctly, and it's rather frustrating.
I have updated my codepen to reflect the changes, and re-linked below for clarity:
https://codepen.io/clownjuice/pen/vMVOYR
While it's great this now 'works' it would be awesome to be able to pull the jQuery code out, but as yet I'm unsure how.