I've figured it out. Doing as below instead of just copying will do the trick.
// Get the layout from the source slide
layout = slide.CustomLayout;
// Copy current slide and paste into new presentation
slide.Copy();
tmpPresentation.Slides.Paste(1);
// Set the layout
tmpPresentation.Slides(1).CustomLayout = layout;
Now I'm getting an unspecified error when trying to save the new file, but that's a whole other problem.