core: Fix handling of shuffle (fixes #453)

- Shuffle internal list when random is enabled
- Use presence of tl_track to determine if this is first run to trigger
  subsequent shuffles.