Oh, a very important addendum to my answer:
By default, AVAssetReaderTrackOutput will not give you the array of tagged buffers (it assumes you just want the primary view). Here is how you can ask that it give you both layers (as an array of tagged buffers):
// The outputSettings dictionary for the AVAssetReaderTrackOutput.
var outputSettings: [String: Any] = [:]
// The decompressionProperties dictionary for the outputSettings.
var decompressionProperties: [String: Any] = [:]
// Specify that you want to read both layers.
decompressionProperties[kVTDecompressionPropertyKey_RequestedMVHEVCVideoLayerIDs as String] = [0, 1]
// Set the decompressionProperties.
outputSettings[AVVideoDecompressionPropertiesKey] = decompressionProperties
// Create your output with the outputSettings and the video track (you can inspect the format description of the video track to make sure it contains multiple layers).
let output = AVAssetReaderTrackOutput(track: videoTracks.first!, outputSettings: outputSettings)
Now, when you call copyNextSampleBuffer(), that sample buffer should have a non-nil array of taggedBuffers.