In practice, I have had great success in Python with LpSolve 5.5,
I have never had to resort to interior point methods, yet. Dual simplex has been sufficient for me- even for integer problems.
But, for your second question, the global best solution depends on your cost function. If the best solution is reached with a large number of zeros - that is still the solution. In rare / integer cases you may find multiple solutions for the same objective value.
Instead, you can add an integer choice variable like 'Is $x_i$ allowed to be non-zero?' Depending on the number of decision variables you have, you can add an additional variable to each of them:
For each decision variable $x_i > 0$, add the constraint:
$$x_i \le Q_i \cdot \text{Inf},$$ where $Q_i$ is $\{0, 1\}$ and $Q_i=1$ allows $x_i$ to be greater than $0$.
Now sum $\sum\limits_iQ_i$ (for all $i$) to your objective function, with a weight that doesn't significantly affect your objective. And this should naturally lead to an objective function where fewer zeros are better.
If your problem has many decision variables this approach may just make the problem too large to solve in a reasonable time, especially since you're adding integer decision variables.