Методом тыка, спустя три дня перебора комбинаций методов нашёл один, который работает. Конечно, он меня не удовлетворил в силу способа отправки данных, но это, по крайней мере, работает
let packagesForm = new FormData();
for (let i = 0; i < packages.length; i++) {
packagesForm.append(`vm[${i}].Image`, packages[i].Image);
packagesForm.append(`vm[${i}].MeasureUnit`, packages[i].MeasureUnit);
packagesForm.append(`vm[${i}].VolumeUnit`, packages[i].VolumeUnit);
packagesForm.append(`vm[${i}].Volume`, packages[i].Volume);
packagesForm.append(`vm[${i}].Price`, packages[i].Price);
packagesForm.append(`vm[${i}].ProductId`, Number(response.id));
}