Found after some more searching:
LattE counts lattice points within rational polytopes via Barvinok's algorithm, which computes the rational multivariate generating function of the lattice points in a region (and then plugs in $x = 1$ to get the count). This works because the generating functions can be additively combined over different pieces of the polytope (at vertices and faces). A paper describing the software is
De Loera et al., Effective lattice point counting in rational convex polytopes
Sage appears to use LattE as a dependency, so that's an easy way to access it.