PS
It turned out to be easier than I expected to write a native LWC that displays multiple date pickers using the standard SLDS formatting. The current template is below, with the JavaScript controller building the data that this template iterates over. Surprisingly fast too: with 40 calendars rendered (as a pathological test case), moving them all by a month so they all change is pretty much instantaneous.
So cleaner to leverage the platform's own framework than to embed a big chunk of JavaScript.
<template>
<!-- One or more consecutive month SLDS date pickers -->
<div class="slds-grid slds-wrap">
<template for:each={pickers} for:item="picker">
<!-- Responsive grid -->
<div key={picker.key} class="slds-col slds-size_1-of-1 slds-medium-size_1-of-2 slds-large-size_1-of-3">
<!-- Date picker per month -->
<div class="slds-form-element slds-p-around_small">
<!-- Want the dropdown look but relative layout -->
<div class="slds-datepicker slds-dropdown" style="position: relative;">
<!-- Selection area -->
<div class="slds-datepicker__filter slds-grid">
<div class="slds-datepicker__filter_month slds-grid slds-grid_align-spread slds-grow">
<div class="slds-align-middle">
<lightning-button-icon
icon-name="utility:left"
variant="bare"
data-relative-month={picker.relativeMonth}
data-month-offset={picker.monthOffset}
onclick={handleLeftClick}
></lightning-button-icon>
</div>
<div class="slds-align-middle">
{picker.monthYear}
</div>
<div class="slds-align-middle">
<lightning-button-icon
icon-name="utility:right"
variant="bare"
data-relative-month={picker.relativeMonth}
data-month-offset={picker.monthOffset}
onclick={handleRightClick}
></lightning-button-icon>
</div>
</div>
</div>
<!-- Month of dates table area -->
<table>
<!-- Headings -->
<tr>
<template for:each={picker.headings} for:item="heading">
<th key={heading.key}>{heading.name}</th>
</template>
</tr>
<!-- Rows -->
<template for:each={picker.weeks} for:item="week">
<tr key={week.key}>
<template for:each={week.days} for:item="day">
<!-- onclick on td didn't appear to work -->
<td key={day.key} class={day.classes}>
<span class="slds-day" data-day-number={day.dayNumber} onclick={handleDayClick}>{day.dayOfMonth}</span>
</td>
</template>
</tr>
</template>
</table>
<!-- Jump to today area -->
<button
class="slds-button slds-align_absolute-center slds-text-link"
data-relative-month={picker.relativeMonth}
data-month-offset={picker.monthOffset}
onclick={handleTodayClick}
>Today</button>
</div>
</div>
</div>
</template>
</div>
</template>