Understanding that this question has been asked a few times (Reprojecting raster from 0 360 to -180 180 with cutting 180 meridian using gdalwarp seems to be the canonical one), I've found that any variation of these solutions causes the left hemisphere to be written with blank data, such as:
gdalwarpwithCENTER_LONG = 0:gdalwarp -s_srs "+proj=longlat +ellps=WGS84" -t_srs WGS84 ~/0_360.tif 180.tif -wo SOURCE_EXTRA=1000 --config CENTER_LONG 0- Generating a VRT and editing the metadata as described here: http://trac.osgeo.org/gdal/wiki/UserDocs/RasterProcTutorial
gdalwarpwith+lon_wrap=180:gdalwarp -s_srs '+proj=longlat +datum=WGS84 +lon_wrap=180' -t_srs '+proj=longlat +datum=WGS84'
This is correctly reprojected, but obviously not what I want as it's missing half the data that was in the original raster. They are raster bands extracted from GRIB2 files. This appears to be something to do with how gdalwarp operates.
What could be causing the left hemisphere to be blank when passed through gdalwarp, and how can I fix it?

