A solution for complex shapes could be to create the straight skeleton of your polygons and place your two points at two different locations on these lines (e.g. 25 and 75 % of the longest line). For most shapes you can also use the medial axis or its approximation (e.g. straight skeleton lines that do not touch any edges of your polygon), but this would not work for circles and regular polygons (the "axis" is then a point).
Another solution is to split your polygons in 2 (example here) then place one point in the first part and the second point in the second part.
Note that Vince's solution seems quite robust too. A variant is to place two random points in each inside buffered polygon with a minimum allowed distance to avoid "overlaps"