The line
if (now - previousWeightTimeMs > MS_PER_WEIGHT_READING) {
should instead read
if ((long) now - previousWeightTimeMs) > MS_PER_WEIGHT_READING) {
to match the pattern described in https://playground.arduino.cc/Code/TimingRollover
It's possible this bug is causing some of the symptoms of Issue #1, because that symptom appears after millis() may have rolled over.
The line
if (now - previousWeightTimeMs > MS_PER_WEIGHT_READING) {
should instead read
if ((long) now - previousWeightTimeMs) > MS_PER_WEIGHT_READING) {
to match the pattern described in https://playground.arduino.cc/Code/TimingRollover
It's possible this bug is causing some of the symptoms of Issue #1, because that symptom appears after millis() may have rolled over.